python - 在遍历那个确切的 List 的同时对 List 中的所有元素求和

标签 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'

据我所知,问题是 ifor 循环中的一个 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/

相关文章:

python-3.x - 在 Linux 命令中使用命令 "import os"失败?

python - 在 Google Colab 中运行 2 个 python 脚本

python - 为什么在python中以这种方式增加一个值?

python - 关于filter和lambda的问题

python - 检查多个模拟的调用顺序

python-3.x - Python 中 Matplotlib 中的响应式文本

python - ipython:暂时转到 shell,稍后返回当前 ipython session

ipython - 正确关闭 PySpark 笔记本

python - Flask:使用 url_for 提供没有前导斜杠的 Assets

python - 在 Python 中合并交叉表