|
|
使用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 = [1, 2, 3, 4, 5]', 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 = [1.5, 2.3, 3.7]
- result = sum(float_list) # 正确运行,结果为7.5
复制代码
只要确保 sum 是内置函数,就可以正常使用。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|