使用带有两个'for'工作的listcomp来压缩列表? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带有两个'for'工作的listcomp来压缩列表? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

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

>>> # flatten a list using a list comprehension with two 'for'
>>> vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [num for elem in vec for num in elem]
[1,2,3,4,5,6,7,8,9]

据我所知,执行顺序就像抽象(从左到右)?关于它还有其他意见吗?

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

答案

它从左到右工作,是以下的简短形式:

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]
另一答案

你是对的,它是从左到右。当你查看等价物时也是如此(因为缩进):

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)

以上是关于使用带有两个'for'工作的listcomp来压缩列表? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python中的for循环取list中的第i 个值值

HDU 4352 XHXJ's LIS

列表,字典,元组,集合内置方法

HDU.4352.XHXJ's LIS(数位DP 状压 LIS)

Gym 101246H``North-East''(LIS)

HDU 4352 XHXJ's LIS