使用具有两个 'for' 工作的 listcomp 展平列表?
Flatten a list using a listcomp with two 'for' working?
给定的代码展平了向量,但我想了解两个 for 循环的执行顺序。我也检查了 Python 文档,但没有给出执行模式。
>>> # 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]
据我了解,执行顺序就像抽象(从左到右)?对此还有其他看法吗
这个 link 使用 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 循环的执行顺序。我也检查了 Python 文档,但没有给出执行模式。
>>> # 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]
据我了解,执行顺序就像抽象(从左到右)?对此还有其他看法吗
这个 link 使用 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)