Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表理解来存储列表的嵌套列表_Python_Python 3.x_List_List Comprehension - Fatal编程技术网

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
    ,将包含返回的列表
  • 左起的第一个循环是最外层的循环,
    用于嵌套列表中的子列表
    ,因此首先迭代输入列表中的每个元素,并将其命名为
    子列表
  • 最右边的循环,
    对于子列表中的项
    是最内部的循环。在您的例子中,此循环迭代
    子列表的每个元素
    ,并将其命名为
    ,最终将在输出中返回

为什么不想使用for loop?@Błotosmętek谢谢你!我会好好研究的away@EkremDİNÇEL我只是想看看是否有一种方法可以使用列表理解
result=[x代表嵌套列表中的列表,x代表嵌套列表中的列表]
@CodingGrind-okHi谢谢你的回答,它奏效了!但是我不确定,为什么这样做有效,而更符合逻辑的方法不行:
[子列表中的项对应项对应嵌套列表中的子列表]
我在哪里可以了解更多有关它的信息(语法)。@CodingGrind:循环从左到右读取,最左边的循环是“外部”循环,最右边的循环是“内部”循环。您提出的方法不起作用,因为在“外部”循环循环一次之前,
子列表
不存在。阅读更多内容。@CodingGrind我添加了一个解释,对你有意义吗?@ShadowRanger告诉我我是否理解错误,但在列表理解中python读取它包含的any for循环,然后检查if和else以及为它存储什么?@CodingGrind:列表理解语法中没有
else
(如果您看到一个,它是嵌入在listcomp中的三元条件表达式的一部分,但它不是listcomp特殊行为的一部分)。至于检查
if
s,其顺序与
for
s的顺序相同(因此,较左的
if
检查频率较低,并控制内部循环)。