列表是Python编程语言中常用的数据类型。列表可以存储具有不同数据类型的多个项。通过使用一个列表变量,可以在一个列表中轻松地存储、使用和操作多个项目。列表项用命令分隔,其中一个列表可以包含单个项或数千项。该列表还可以将另一个列表作为一个项目或元组,该项目或元组也可以包含多个项目。在本教程中,我们将学习如何展平嵌套列表?
列表或嵌套列表的列表
在展开或转换平面列表之前,我们应该学习嵌套列表。嵌套列表是指至少包含一个项(列表、元组或字典)的列表。作为列表,元组和字典是结构化的列表,它们也可以包含多个项。
mylist = [ 1 , 2 , "ali" , "ahmet" , [ 1 , 2 , 3 ] , ["a" , "b" , "c" , [ 10 , 11 , 12 ] ] ]
列表理解
将嵌套列表转换为平面列表的最常用和最简单的方法是使用列表理解方法。列表理解方法很容易用一行代码实现,并且以一种优雅易懂的方式实现。但请记住,我们的列表是两级的,主列表的每一项也是一个列表。这不适用于可变级别列表。
mylist = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ]flat_list = [ item for var_list in mylist for item in var_list]print(flat_list)
![图片[1]-在Python中展平嵌套列表-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-49.png)
深度展平模块
在上一个示例中,我们已经展平了一个嵌套列表,其中父列表的所有项也是列表。如果列表超过2级,我们应该提高以前的列表理解,这将是复杂的或使用另一种方式。Deepflatten是迭代实用程序包提供的一种方法,Python默认情况下不安装该方法。 深度展平() 方法将给定的嵌套列表转换为平面列表。我们可以用下面的pip命令安装迭代实用程序。
$ pip3 install iteration-utilities
然后我们将使用deepflatten()方法,通过导入下面的迭代工具模块。
from iteration_utilities import deepflattenmylist = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 , [ 8 , 9 ] ] ]flat_list = deepflatten(mylist)print(flat_list)
带for循环的递归迭代
我们可以使用friend for循环来递归地迭代给定的列表和子列表。我们将使用多个嵌套for循环,其中for循环cunt与嵌套列表级别相关。如果有2个级别,我们将使用2个嵌套的循环,如果有4个级别的嵌套列表,我们将使用4个嵌套的循环。
mylist = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ]flat_list = []for i in range(len(mylist)): for j in range(len(mylist[i])): flat_list.append(mylist[i][j])print(flat_list)
![图片[2]-在Python中展平嵌套列表-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-50.png)
用reduce()方法展平
functools模块提供了reduce方法,可用于将嵌套列表转换为平面列表。我们将为reduce指定operator.iconcat方法,其中将逐个选择项,并放置一个简单而简单的列表。
import functools
import operator
mylist = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ]
flat_list = functools.reduce(operator.iconcat, mylist , [])
print(flat_list)
![图片[3]-在Python中展平嵌套列表-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-51.png)