繁体   English   中英

列表中的python生成器无法使用它

[英]python generators in lists can't use it

我创建了一个像这样的列表:

z=[5,4]

并且我需要将此列表值分配给另一个列表,并将z list的元素设置为该列表的第一个元素,所以我这样做:

other.append([i,0,'tweak'] for i in z)

但它不断生成类似这样的东西:

[<generator object <genexpr> at 0x024B7F30>, <generator object <genexpr> at 0x02562288>]

我无法在此表单上使用其他列表!

我希望我的其他列表如下所示:

[[5,0,'tweak'][4,0,'tweak']]

[i,0,'tweak'] for i in z是生成器表达式。 没有声明显式的可迭代类型(列表用方括号[l1, l2] )-解释器检测到它并创建按需计算值的对象-生成器。

如果要创建列表,则必须显式声明。

other.append([[i,0,'tweak'] for i in z])  # appends list, not generator

笔记:

  • [i,0,'tweak'] for i in z创建一个生成器函数,而不是List Comprehension将其转换,您可以添加方括号, ie [[i,0,'tweak'] for i in z]
  • 现在解决第二个问题时,第一个问题已得到纠正[[i,0,'tweak'] for i in z]创建lists of list [[LOL]] ,当您追加到列表中时,它成为lists of lists of list [[[LOLOL]]]避免您可以使用append

你可以这样做

码:

z=[5,4]
other=[]
other.extend([[i,0,'tweak'] for i in z])
print other

这个 ?

z=[5,4]
other = [] # or some list
other += [[i,0,'tweak'] for i in z]

您根本不需要在这里使用append,因为您想直接构造列表。 只需使用列表理解即可:

other = [[i,0,'tweak'] for i in z]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM