LEEFEI571 发表于 前天 10:52

使用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函数进行求和?谢谢!

FishC 发表于 前天 10:53

使用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 环境或删除自定义变量。

修正后的代码:

import timeit

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

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

print("创建元组的平均时间是:", t_average)
print("创建列表的平均时间是:", l_average)


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

float_list =
result = sum(float_list)# 正确运行,结果为7.5

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 使用sum函数的困惑