我想在list-comprehension中使用两个for循环,但是我想使用第二个的名称作为第一个iterable的索引。我怎么能这样做?
示例:
l = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
[x for x in l[i] for i in range(len(l))]
错误:
Traceback (most recent call last):
File "python", line 2, in <module>
NameError: name 'i' is not defined
答案 0 :(得分:5)
您的for
循环的顺序混乱了。它们应该列在嵌套顺序中,如果您正常写出循环,则使用相同的顺序:
[x for i in range(len(l)) for x in l[i]]
如果有疑问,写出循环就像你在使用语句时写的那样。你的列表理解试图这样做:
for x in l[i]:
for i in range(len(l)):
x
这使您在定义之前尝试访问i
更为明显。