Python - 展平 2D 列表的方法
pythonserver side programmingprogramming更新于 2023/10/26 8:36:00
列表是有序且可更改的集合。在 Python 中,列表用方括号书写。您可以通过引用索引号来访问列表项。负索引表示从末尾开始,-1 表示最后一项。您可以通过指定范围的起始位置和终止位置来指定索引范围。指定范围时,返回值将是一个包含指定项目的新列表。
示例
# 使用 chain.from_iterables # 导入 chain 来自 itertools 导入 chain ini_list = [[1, 2, 3], [3, 6, 7], [7, 5, 4]] # 打印初始列表 print ("initial list ", str(ini_list)) # 将 2d 列表转换为 1d # 使用 chain.from_iterables flatten_list = list(chain.from_iterable(ini_list)) # 打印 flatten_list print ("final_result", str(flatten_list)) # 使用列表推导式 # 导入 chain from itertools 导入 chain ini_list = [[1, 2, 3], [3, 6, 7], [7, 5, 4]] # 打印初始列表 print ("initial list ", str(ini_list)) # 将 2d 列表转换为 1d # 使用列表推导 flatten_list = [j for sub in ini_list for j in sub] # 打印 flatten_list print ("final_result", str(flatten_list)) # 使用 functools.reduce # 导入 functools from functools import reduce ini_list = [[1, 2, 3], [3, 6, 7], [7, 5, 4]] # 打印初始列表 print ("initial list ", str(ini_list)) # 将 2d 列表转换为 1d # 使用 functools.reduce flatten_list = reduce(lambda z, y :z + y, ini_list) # 打印 flatten_list print ("final_result", str(flatten_list)) # 使用 sum ini_list = [[1, 2, 3], [3, 6, 7], [7, 5, 4]] # 打印初始列表 print ("initial list ", str(ini_list)) # 将 2d 列表转换为 1d flatten_list = sum(ini_list, []) # 打印 flatten_list print ("final_result", str(flatten_list)) ini_list=[[1, 2, 3], [3, 6, 7], [7, 5, 4]] #使用 lambda flatten_list = lambda y:[x for a in y for x in flatten_list(a)] if type(y) is list else [y] print("Initial list ",ini_list) #打印初始列表 print("Flattened List ",flatten_list(ini_list)) # 打印扁平列表
输出
('初始列表','[[1, 2, 3], [3, 6, 7], [7, 5, 4]]') ('最终结果','[1, 2, 3, 3, 6, 7, 7, 5, 4]') ('初始列表','[[1, 2, 3], [3, 6, 7], [7, 5, 4]]') ('最终结果','[1, 2, 3, 3, 6, 7, 7, 5, 4]') ('初始列表','[[1, 2, 3], [3, 6, 7], [7, 5, 4]]') ('最终结果','[1, 2, 3, 3, 6, 7, 7, 5, 4]') ('初始列表','[[1, 2, 3], [3, 6, 7], [7, 5, 4]]') ('最终结果','[1, 2, 3, 3, 6, 7, 7, 5, 4]') ('初始列表',[[1, 2, 3], [3, 6, 7], [7, 5, 4]]) ('扁平列表',[1, 2, 3, 3, 6, 7, 7, 5, 4])