Python 如何使用列表理解来存储列表的嵌套列表
我想知道,如果我有Python 如何使用列表理解来存储列表的嵌套列表,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,我想知道,如果我有nested_list=[[1,2,3],[4,5,6],[7,8,9]我怎么能打破循环,只在每个嵌套列表中存储项目,我所说的循环是指当我尝试时: result = [[value_1 for value_1 in a_list] for a_list in nested_list] 唯一的结果是…我们开始时的确切列表:/。那么,使用nested\u list上的列表理解来存储类似于[1,2,3,4,5,6,7,8,9]的项目的方法是什么呢。我重复一遍,列表理解,而不是“fo
nested_list=[[1,2,3],[4,5,6],[7,8,9]
我怎么能打破循环,只在每个嵌套列表中存储项目,我所说的循环是指当我尝试时:
result = [[value_1 for value_1 in a_list] for a_list in nested_list]
唯一的结果是…我们开始时的确切列表:/。那么,使用nested\u list
上的列表理解来存储类似于[1,2,3,4,5,6,7,8,9]
的项目的方法是什么呢。我重复一遍,列表理解,而不是“for循环”。试试这个:
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
output = [item for sublist in nested_list for item in sublist]
print(output) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
说明:
对嵌套循环使用列表理解时,表达式的结构如下所示:
- 最左边的表达式,
,将包含返回的列表item
- 左起的第一个循环是最外层的循环,
,因此首先迭代输入列表中的每个元素,并将其命名为用于嵌套列表中的子列表
子列表
- 最右边的循环,
是最内部的循环。在您的例子中,此循环迭代对于子列表中的项
,并将其命名为子列表的每个元素
,最终将在输出中返回项
result=[x代表嵌套列表中的列表,x代表嵌套列表中的列表]
@CodingGrind-okHi谢谢你的回答,它奏效了!但是我不确定,为什么这样做有效,而更符合逻辑的方法不行:[子列表中的项对应项对应嵌套列表中的子列表]
我在哪里可以了解更多有关它的信息(语法)。@CodingGrind:循环从左到右读取,最左边的循环是“外部”循环,最右边的循环是“内部”循环。您提出的方法不起作用,因为在“外部”循环循环一次之前,子列表
不存在。阅读更多内容。@CodingGrind我添加了一个解释,对你有意义吗?@ShadowRanger告诉我我是否理解错误,但在列表理解中python读取它包含的any for循环,然后检查if和else以及为它存储什么?@CodingGrind:列表理解语法中没有else
(如果您看到一个,它是嵌入在listcomp中的三元条件表达式的一部分,但它不是listcomp特殊行为的一部分)。至于检查if
s,其顺序与for
s的顺序相同(因此,较左的if
检查频率较低,并控制内部循环)。