鱼C论坛

 找回密码
 立即注册
查看: 26|回复: 1

使用sum函数的困惑

[复制链接]
发表于 7 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神好:

小甲鱼老师在元组的课后作业有这么一道题:

请编写代码,测试一下到底是创建列表的速度快,还是创建元组的速度快?为了得到更精准的数据,请重复测试 100 次,并分别计算出平均时间。

习题答案中说到使用 sum() 函数之后,代码就能简单多了……,代码如下:

import timeit
   
t_speed = timeit.repeat('t = (1, 2, 3, 4, 5)', repeat=100)
l_speed = timeit.repeat('l = [1, 2, 3, 4, 5]', repeat=100)
   
t_average = sum(t_speed) / len(t_speed)
l_average = sum(l_speed) / len(l_speed)
   
print("创建元组的平均时间是:", t_average)
print("创建列表的平均时间是:", l_average)

但我在运行时却代码报错,报错提示如下:
TypeError                                 Traceback (most recent call last)
/var/folders/lh/m3y5bnhx76v33xy78tm6kps80000gn/T/ipykernel_1036/868242291.py in <module>
      4 l_speed = timeit.repeat('l = [1, 2, 3, 4, 5]', repeat=100)
      5
----> 6 t_average = sum(t_speed) / len(t_speed)
      7 l_average = sum(l_speed) / len(l_speed)
      8

TypeError: 'float' object is not callable

请问各位大佬,如列表中的数据为浮点类型时,如何使用sum函数进行求和?谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 7 小时前 | 显示全部楼层
使用sum函数的困惑
各位大神好:

小甲鱼老师在元组的课后作业有这么一道题:

请编写代码,测试一下到底是创建列表的速度快,还是创建元组的速度快?为了得到更精准的数据,请重复测试 100 次,并分别计算出平均时间。

习题答案中说到使用 sum() 函数之后,代码就能简单多了……,代码如下:

import timeit
   
t_speed = timeit.repeat('t = (1, 2, 3, 4, 5)', repeat=100)
l_speed = timeit.repeat('l = ', repeat=100)
   
t_average = sum(t_speed) / len(t_speed)
l_average = sum(l_speed) / len(l_speed)
   
print("创建元组的平均时间是:", t_average)
print("创建列表的平均时间是:", l_average)

但我在运行时却代码报错,报错提示如下:
TypeError                                 Traceback (most recent call last)
/var/folders/lh/m3y5bnhx76v33xy78tm6kps80000gn/T/ipykernel_1036/868242291.py in <module>
      4 l_speed = timeit.repeat('l = ', repeat=100)
      5
----> 6 t_average = sum(t_speed) / len(t_speed)
      7 l_average = sum(l_speed) / len(l_speed)
      8

TypeError: 'float' object is not callable

请问各位大佬,如列表中的数据为浮点类型时,如何使用sum函数进行求和?谢谢!


错误原因:
报错 TypeError: 'float' object is not callable 表示内置函数 sum 被意外覆盖为一个浮点数变量,导致调用时出错。这可能是在代码的其他部分定义了类似 sum = 某个浮点数 的语句。

解决方案:
1. 检查代码中是否将 sum 用作变量名,如果是,请重命名该变量(例如改为 total_sum)。
2. 修正代码中不完整的表达式(列表创建部分)。
3. 如果无法找到覆盖来源,可以重启 Python 环境或删除自定义变量。

修正后的代码:

  1. import timeit

  2. # 修正列表创建的表达式
  3. t_speed = timeit.repeat('t = (1, 2, 3, 4, 5)', repeat=100)
  4. l_speed = timeit.repeat('l = [1, 2, 3, 4, 5]', repeat=100)

  5. # 确保sum是内置函数:如果之前覆盖了,请删除或重启环境
  6. # 例如,若有 sum = 3.14,先执行 del sum
  7. t_average = sum(t_speed) / len(t_speed)
  8. l_average = sum(l_speed) / len(l_speed)

  9. print("创建元组的平均时间是:", t_average)
  10. print("创建列表的平均时间是:", l_average)
复制代码


关于浮点数列表求和:
sum 函数本身支持浮点数列表,例如:

  1. float_list = [1.5, 2.3, 3.7]
  2. result = sum(float_list)  # 正确运行,结果为7.5
复制代码

只要确保 sum 是内置函数,就可以正常使用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-14 18:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表