Python - 为什么这段代码被认为是一个生成器?

标签 python list python-3.x generator

我有一个名为“mb”的列表,它的格式是:

['Company Name', 'Rep', Mth 1 Calls, Mth 1 Inv Totals, Mth 1 Inv Vol, Mth 2 

...等等

在下面的代码中,我只是附加了一个包含 38 个 0 的新列表。这很好。

但是在下一行我得到一个错误: 'generator' 对象不支持项目分配

谁能告诉我: 1)如何纠正这个错误,以及 2) 为什么下面的 len(mb)-1 被认为是生成器。

注意:row[0] 只是另一个列表中保存的“公司名称”。

mb.append(0 for x in range(38))
mb[len(mb)-1][0]=row[0]

最佳答案

事实上,您并没有追加 38 个 0 的列表:您追加了一个生成器,它将产生 0 38 次。这不是你想要的。但是,您可以将 mb.append(0 for x in range(38)) 更改为

mb.append([0 for x in range(38)]) 
# note the [] surrounding the original generator expression!  This turns it
# into a list comprehension.

或者,更简单(感谢@John 在评论中指出这一点)

mb.append([0] * 38)

关于Python - 为什么这段代码被认为是一个生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123912/

相关文章:

list - 在 Haskell 中格式化列表输出?

python - 返回列表中最长单词的 len

list - Groovy 列表应用闭包

python - Python 中 Eratosthenes 的惰性筛选

python - 如何从 GEANY (win 7) 运行脚本?

python - Kafka-python 如何消费json消息

Python 错误 : name 'admin' is not defined

python - 如何在按键时连续移动pygame中的表面?

python - Python 求和递归教程

python - For 循环子集化的 pandas 数据帧