我创建了一个这样的列表:
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']]
答案 0 :(得分:4)
[i,0,'tweak'] for i in z
是一个生成器表达式。没有声明显式的可迭代类型(列表用方括号[l1, l2]
表示) - 解释器检测到它并创建按需计算值的对象 - 生成器。
如果要创建列表,则必须明确声明。
other.append([[i,0,'tweak'] for i in z]) # appends list, not generator
答案 1 :(得分:3)
备注:强>
[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
答案 2 :(得分:2)
这个?
z=[5,4]
other = [] # or some list
other += [[i,0,'tweak'] for i in z]
答案 3 :(得分:2)
你不应该在这里使用append,因为你想直接构建你的列表。只需使用列表理解:
other = [[i,0,'tweak'] for i in z]