Pho*_*nix 2 python list generator python-3.x
我有一个名为'mb'的列表,其格式为:
['Company Name', 'Rep', Mth 1 Calls, Mth 1 Inv Totals, Mth 1 Inv Vol, Mth 2
Run Code Online (Sandbox Code Playgroud)
...等等
在下面的代码中,我只需附加一个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]
Run Code Online (Sandbox Code Playgroud)
Cod*_*all 10
实际上,你不附加38 0的列表:你附加一个将产生 38次的生成器.这不是你想要的.但是,您可以更改为可以更改为 0mb.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.
Run Code Online (Sandbox Code Playgroud)
或者,更简单(感谢@John在评论中指出这一点)
mb.append([0] * 38)
Run Code Online (Sandbox Code Playgroud)
你应该这样做:
mb.extend([0]*38)
Run Code Online (Sandbox Code Playgroud)
这样你就会附加38个零,而不是附加一个由range()(在Python 2中给出一个列表的nb)给出的单个生成器表达式.
并且使用extend而不是append会使列表长38,而不是使其长1,并且使1个新元素成为38个零的列表.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |