列表理解如何适用于两个 for 循环?
How list comprehension works for two for loop?
这是两个for循环代码,内层循环依赖于第一个循环。当我尝试创建列表压缩时,它给出了错误的结果。请指出缺少的内容。
for i in range(5):
for j in range(i):
print(j, end=', ')
print()
print([j for j in range(i) for i in range(5)])
输出:
0, 0, 1, 0, 1, 2, 0, 1, 2, 3,
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]
谢谢!!!
在你从上到下阅读 for 循环的地方,你在列表理解中从左到右阅读生成器。
# outer/first inner/second
>>> print([j for i in range(5) for j in range(i)])
[0, 0, 1, 0, 1, 2, 0, 1, 2, 3]
您在问题中使用的示例仅有效,因为当您 运行 range(i)
时,i
仍然是从先前的 for
循环定义的。如果您尝试 运行 在新的解释器中,您将在 i
上得到 NameError
。
这是两个for循环代码,内层循环依赖于第一个循环。当我尝试创建列表压缩时,它给出了错误的结果。请指出缺少的内容。
for i in range(5):
for j in range(i):
print(j, end=', ')
print()
print([j for j in range(i) for i in range(5)])
输出:
0, 0, 1, 0, 1, 2, 0, 1, 2, 3,
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]
谢谢!!!
在你从上到下阅读 for 循环的地方,你在列表理解中从左到右阅读生成器。
# outer/first inner/second
>>> print([j for i in range(5) for j in range(i)])
[0, 0, 1, 0, 1, 2, 0, 1, 2, 3]
您在问题中使用的示例仅有效,因为当您 运行 range(i)
时,i
仍然是从先前的 for
循环定义的。如果您尝试 运行 在新的解释器中,您将在 i
上得到 NameError
。