迭代列表中的所有元素,同时迭代该精确列表

时间:2015-11-14 12:16:17

标签: python python-3.x ipython

有人可以帮我解决这个问题吗?

(我知道有一个内置的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'

据我所知,问题是igenerator循环中是for,因此无法将其添加到int sum

我也试过了sum = sum + int(lst[i]),这导致了以下内容:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'generator'

1 个答案:

答案 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