如何使用嵌套名称作为列表推导中前一个可迭代的__getitem__索引?

Eri*_*ans 5 python nested list-comprehension

我想在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))]
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "python", line 2, in <module>
NameError: name 'i' is not defined
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你的for循环顺序混乱了.它们应该按嵌套顺序列出,如果您正常写出循环,则使用相同的顺序:

[x for i in range(len(l)) for x in l[i]]
Run Code Online (Sandbox Code Playgroud)

如果有疑问,写出循环,就像你在使用语句时写的那样.你的列表理解试图这样做:

for x in l[i]:
    for i in range(len(l)):
        x
Run Code Online (Sandbox Code Playgroud)

这使您i在定义它之前尝试访问更加明显.