有人可以帮我解决这个问题吗?
(我知道有一个内置的sum()
函数,这个code
只是我遇到的一般问题的一个例子)
def sumlist (lst):
sum = 0
for i in range(len(lst)):
sum = sum + lst[i]
return sum
我得到了这个错误:
sum = sum + lst[i]
TypeError: unsupported operand type(s) for +: 'int' and 'generator'
据我所知,问题是 i
是 for
循环中的一个 generator
,因此无法将其添加到int sum
.
我还尝试了 sum = sum + int(lst[i])
导致以下结果:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'generator'
最佳答案
你错了。 i
不是生成器。 i
是一个整数。
lst
在您的案例中是一个生成器。而且您不能使用索引访问生成器中的元素。
一个简单的修复方法是在调用 sumlist
之前将生成器转换为列表。
例如:
generator_object = (i**2 for i in range(5))
print(sumlist(list(generator_object)))
另一种可能性是在没有索引的情况下迭代生成器。
def sumgenerator(generator):
sum = 0
for element in generator:
sum = sum + element
return sum
关于python - 在遍历那个确切的 List 的同时对 List 中的所有元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708305/