sum(iterable)有效:
def sum(iterable):
s = 0
for x in iterable:
s = s.__add__(x)
return s
Python是否有内置函数可以在不设置初始值的情况下完成此操作?
# add is interchangeable with sub, mul, etc.
def chain_add(iterable):
iterator = iter(iterable)
s = next(iterator)
while True:
try:
s = s.__add__(next(iterator))
except StopIteration:
return s
我总和的问题是它不适用于支持运算符的其他类型,例如计数器.
解决方法:
尝试查看python reduce()
function:您传入一个函数,一个可迭代的和一个可选的初始化程序,它会将该函数累加到所有值.
例如:
import functools
def f(x,y):
return x+y
print functools.reduce(f, [1, 2, 3, 4]) # prints 10
print functools.reduce(f, [1, 2, 3, 4], 10) # prints 20, because it initializes at 10, not 0.
您可以根据您的iterable更改函数,因此它可以自定义.