如何在列表理解中使用嵌套名称作为前一个可迭代对象的 __getitem__ 索引?
How can I use a nested name as the __getitem__ index of the previous iterable in list comprehensions?
我想在列表理解中使用两个 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]]
如有疑问,请像使用语句时那样编写循环。你的列表理解试图这样做:
for x in l[i]:
for i in range(len(l)):
x
这使得您在定义 i
之前尝试访问它变得更加明显。
我想在列表理解中使用两个 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]]
如有疑问,请像使用语句时那样编写循环。你的列表理解试图这样做:
for x in l[i]:
for i in range(len(l)):
x
这使得您在定义 i
之前尝试访问它变得更加明显。