如何理解python中making list的list comprehensions?
How to understand the list comprehensions in making list in python?
我有一个元组列表,它将转换到另一个包含列表类型元素的列表,因为每个元素都是一个列表,我们可以插入自然数头部。让我们把:
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]]
是没有一个循环执行在一步步debug,只是超出了我对其他语言表达的印象
insert
方法不 return 任何东西,在 Python 中等同于 returning None
常量。因此,例如在这一行之后:
y = [x for x in l[z]].insert(0, z)
y
将 始终 为 None
。这就是您附加到 lx
的内容,因此是结果。您的第一个片段是正确的方法。这个问题与列表理解无关。
我有一个元组列表,它将转换到另一个包含列表类型元素的列表,因为每个元素都是一个列表,我们可以插入自然数头部。让我们把:
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]]
是没有一个循环执行在一步步debug,只是超出了我对其他语言表达的印象
insert
方法不 return 任何东西,在 Python 中等同于 returning None
常量。因此,例如在这一行之后:
y = [x for x in l[z]].insert(0, z)
y
将 始终 为 None
。这就是您附加到 lx
的内容,因此是结果。您的第一个片段是正确的方法。这个问题与列表理解无关。