嵌套列表的理解与嵌套for循环[重复]不相同

问题描述 投票:0回答:1

我有以下嵌套循环:

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循环相同的结果?

python for-loop list-comprehension nested-loops
1个回答
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循环的顺序相同。

© www.soinside.com 2019 - 2024. All rights reserved.