我有以下嵌套循环:
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循环相同的结果?
列表理解不执行任何操作,因为在列表理解之外未定义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循环的顺序相同。