跳到主要内容

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 函数