有人可以帮我解决这个问题吗?
(我知道有一个内置的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
在generator
循环中是for
,因此无法将其添加到int sum
。
我也试过了sum = sum + int(lst[i])
,这导致了以下内容:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'generator'
答案 0 :(得分:1)
你弄错了。 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