Python 程序展平嵌套列表
要理解这个例子,你需要了解以下Python 编程主题的知识:
示例 1:使用列表推导
my_list = [[1], [2, 3], [4, 5, 6, 7]]
flat_list = [num for sublist in my_list for num in sublist]
print(flat_list)
输出
[1, 2, 3, 4, 5, 6, 7]
这是扁平化列表最简单的Python风格方法之一。
- 使用列表推导从
my_list
访问子列表,然后访问子列表的每个元素。 - 每个元素 num 被存储在
flat_list
中。
了解更多关于列表推导的信息,请访问Python 列表推导。
示例 2:使用嵌套的 for 循环(非 Python 风格的方法)
my_list = [[1], [2, 3], [4, 5, 6, 7]]
flat_list = []
for sublist in my_list:
for num in sublist:
flat_list.append(num)
print(flat_list)
输出
[1, 2, 3, 4, 5, 6, 7]
- 创建一个空列表
flat_list
。 - 使用嵌套循环访问子列表的每个元素,并将该元素附加到
flat_list
。
示例 3:使用 itertools 包
import itertools
my_list = [[1], [2, 3], [4, 5, 6, 7]]
flat_list = list(itertools.chain(*my_list))
print(flat_list)
输出
[1, 2, 3, 4, 5, 6, 7]
使用 itertools 模块,我们可以创建一个扁平化的列表。
- itertools 模块的
chain()
方法返回每个可迭代对象(即子列表)的每个元素。 list()
将这些返回值转换为列表。
示例 4:使用 sum()
my_list = [[1], [2, 3], [4, 5, 6, 7]]
flat_list = sum(my_list, [])
print(flat_list)
输出
[1, 2, 3, 4, 5, 6, 7]
- 为
sum()
方法提供两个参数:my_list
和一个空列表(即[ ]
)。 - sum() 结合
my_list
和[ ]
来产生一个扁平化的列表。
示例 5:使用 lambda 和 reduce()
from functools import reduce
my_list = [[1], [2, 3], [4, 5, 6, 7]]
print(reduce(lambda x, y: x+y, my_list))
输出
[1, 2, 3, 4, 5, 6, 7]
在上面的例子中,reduce()
将 lambda 函数应用于 my_list
的所有元素。
了解更多关于 lambda 表达式的信息,请访问Python 匿名/lambda 函数。