今天刚接触Python,学到sum函数的时候书上说只能求和int,然后我拿小数试了一下,为什么会是下面这样的呢?我一开始以为会直接弹error
精度问题,你写的1.2在你看来就是1.2,实际代码运行的时候可能是1.2000000001或者1.20000000002等等,所以你用sum的时候是有问题的
你什么版本的
不知道你这个问题是否已经解决, 如果还没有解决的话:以sum(a,b)为例,对矩阵a中数值相加:2+1=3,
b中的两个数分别作为起始数(start),将3与它们分别相加3+5 = 8, 3+3 = 6,
sum(a,b)输出结果为[8, 6]
如此应该可以解释为什么sum(c, b)与sum(b, c)结果不同
代码如下:
import numpy as np
a = np.array([2, 1])
b = np.array([5, 3])
c = np.array([5, 4])
print("sum(a,b):",sum(a,b)) # 输出结果:[8 6]
print("sum(sum(a,b)):",sum(sum(a,b))) # 输出结果:14
print("sum(c,b):",sum(c,b)) # 输出结果:[14 12]
print("sum(sum(c,b)):",sum(sum(c,b))) # 输出结果:26
print("sum(b,c):",sum(b,c)) # 输出结果:[13 12]
print("sum(sum(b,c)):",sum(sum(b,c))) # 输出结果:25
问题解答:
Python的sum函数对小数也能求和的原因是Python中的sum函数在对可迭代对象进行求和时,会先将可迭代对象中的每个元素转换为数值类型,然后再进行求和计算。这意味着sum函数可以对不同类型的数值进行求和,包括整数和小数。
具体来说,sum函数在对可迭代对象进行求和时,会依次将可迭代对象中的每个元素传入到sum函数中,并将它们转换为数值类型后相加。如果可迭代对象中的元素不是数值类型,将会触发TypeError错误。
下面是一个示例代码,展示了sum函数对小数进行求和的例子:
num_list = [1.5, 2.5, 3.5]
result = sum(num_list)
print(result) # 输出6.5
在这个示例中,num_list是一个包含三个小数的列表。sum函数将这三个小数分别传入,并将它们相加得到结果6.5。
另外需要注意的是,sum函数还可以接受一个可选的start参数,用于指定相加的起始值。如果不指定start参数,默认为0。下面是一个示例代码,展示了使用start参数的例子:
num_list = [1.5, 2.5, 3.5]
result = sum(num_list, 10)
print(result) # 输出16.5
在这个示例中,start参数被设置为10,sum函数将先将10与num_list中的小数相加,然后再将它们的和返回。
综上所述,Python的sum函数对小数也能求和的原因是sum函数在对可迭代对象进行求和时,会将可迭代对象中的元素转换为数值类型后相加。可以通过传入start参数来设置相加的起始值。