列表中的python生成器不能使用i

2024-06-16 10:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了这样一个列表:

z=[5,4]

我需要将这个列表的值赋给另一个列表,并将z列表的元素设置为该列表的第一个元素,这样做:

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']]

Tags: in元素表单列表forobjectgeneratorat
3条回答

[i,0,'tweak'] for i in z是一个生成器表达式。没有显式的iterable类型声明(列表由方括号表示)[l1, l2]-解释器检测它并创建按需计算值的对象-生成器。你知道吗

如果要创建列表,必须显式声明它。你知道吗

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

这个?你知道吗

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

备注:

  • [i,0,'tweak'] for i in z创建一个生成器函数而不是List Comprehension要转换它,可以添加方括号i.e. [[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

相关问题 更多 >