我有以下嵌套循环:
for i in range(1,5):
for j in range(0,i):
j
当我尝试使用列表理解来重新表达相同的结果时,会得到奇怪的结果
[j for j in range(0,i) for i in range(1,5)]
首先,有人可以通过此列表理解来解释输出吗?我似乎不太了解Python在这里做什么。
第二,内部for
的迭代器是否可以不显式依赖外部索引?
第三,有什么方法可以修改列表理解,以获得与开始时编写的嵌套for循环相同的结果?
答案 0 :(得分:1)
您的列表理解不会执行任何操作,因为如果没有在列表理解之外定义i
,它就不会运行。
要实现您想要的目标(是的,这很直观),您需要执行以下操作:
[j for i in range(1,5) for j in range(0,i)]
这将产生:
[0, 0, 1, 0, 1, 2, 0, 1, 2, 3]
这与嵌套的for循环的顺序相同。