我想在列表理解中使用两个for循环,但我想使用第二个的名称作为第一个可迭代的索引。我怎样才能做到这一点?

例子:

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

最佳答案

您已将for循环的顺序混在一起。它们应以嵌套顺序列出,如果您通常写出循环,则使用的顺序应与嵌套顺序相同:

[x for i in range(len(l)) for x in l[i]]

如有疑问,请像使用语句时那样编写循环。您的 list 理解力试图做到这一点:
for x in l[i]:
    for i in range(len(l)):
        x

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

关于python - 如何使用嵌套名称作为列表推导中先前可迭代的__getitem__索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31935514/

10-12 15:22