我有一个元组列表,它将被转换到另一个包含列表类型元素的列表,因为每个元素都是一个列表,我们可以在头部插入自然数。我们来吧:
l = [('c++', 'compiled'), ('python', 'interpreted')]
lx = []
for z in xrange(len(l)):
y = [x for x in l[z]]
y.insert(0, z)
lx.append(y)
print lx
[[0, 'c++', 'compiled'], [1, 'python', 'interpreted']]
看,完成工作,它以这种方式工作。除以下任何一项外
既不:
l = [('c++', 'compiled'), ('python', 'interpreted')]
lx = []
for z in xrange(len(l)):
y = [x for x in l[z]]
lx.append(y.insert(0, z))
print lx
[None, None]
也:
l = [('c++', 'compiled'), ('python', 'interpreted')]
lx = []
for z in xrange(len(l)):
y = [x for x in l[z]].insert(0, z)
lx.append(y)
print lx
[None, None]
更不用说了:
l = [('c++', 'compiled'), ('python', 'interpreted')]
lx = []
for z in xrange(len(l)):
lx.append([x for x in l[z]].insert(0, z))
print lx
[None, None]
作品,为什么?我注意到了:
y = [x for x in l[z]]
在调试中逐步执行一个周期执行,这超出了我对其他语言表达的印象。
答案 0 :(得分:5)
insert
方法不会返回任何内容,这在Python中等同于返回None
常量。所以,例如在这一行之后:
y = [x for x in l[z]].insert(0, z)
y
始终为None
。这就是你追加lx
的结果。你的第一个片段是正确的方法。这个问题与列表推导无关。