Python 如何在列表理解中使用嵌套名称作为前一个iterable的_getitem___)索引?

Python 如何在列表理解中使用嵌套名称作为前一个iterable的_getitem___)索引?,python,nested,list-comprehension,Python,Nested,List Comprehension,我想在列表理解中使用两个for循环,但我想使用第二个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

我想在列表理解中使用两个for循环,但我想使用第二个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
回溯(最近一次呼叫最后一次):
文件“python”,第2行,在
名称错误:未定义名称“i”

您的
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
之前尝试访问它变得更加明显