使用带有两个“ for”工作的listcomp来使列表变平?

时间:2019-01-06 04:46:57

标签: python list flatten

给定的代码使向量变平,但是我想了解两个for循环的执行顺序。我也检查了Python文档,但是没有给出执行模式。

Views

据我了解,执行顺序就像抽象(从左到右)吗?还有其他意见吗?

此链接使用lambda表达式进行了展平,我的问题是关于在List Comp中验证两个是否可以执行循环:How to make a flat list out of list of lists?

2 个答案:

答案 0 :(得分:2)

它从左到右起作用,是以下形式的缩写:

vec = [[1,2,3], [4,5,6], [7,8,9]]
flatten = []
for elem in vec:
    for num in elem:
        flatten.append(num)

这将为您提供与[num for elem in vec for num in elem]相同的输出。

[1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 1 :(得分:1)

您是正确的,关于它从左到右。当您也查看等效项时也是如此(由于缩进):

vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
output = []
for elem in vec:     # first layer
    for num in elem: # second layer
        output.append(num)