如何在Python中扁平化一个嵌套的列表(附教程)

775 阅读2分钟

一个嵌套的列表可能是一个列表的列表或包含几个数据类型。如果你用几个较小的数据类型建立了一个列表,你可能想把它扁平化,使项目更容易阅读和访问。

通过三种不同的方法,了解如何将一个嵌套的列表变成一个直的列表。

如何平坦一个 Python 列表

在 Python 中,有几种方法可以将嵌套的列表拉直,这取决于其复杂性。例如,一个只包含列表的列表比一个有混合数据类型的列表更容易被拉平。

在下面的章节中,你将看到如何处理它们中的每一个。

如何用 Sum() 函数平铺一个嵌套的列表

这个方法只适用于 Python 的列表,它涉及到将这种嵌套列表中的项目连接起来。它不适用于循环、字典、集合或混合数据类型的列表,因为你不能连接这些类型。

虽然你可以使用for 循环来平铺一个列表,但**sum()**函数是直接的,而且更易读,因为它是一个Python 单行程序

nestedList = [[1, 3, 4], [2, 4], [7, 9, 0]]
 
flatList = sum(nestedList, [])
print(flatList)
 
# Output: [1, 3, 4, 2, 4, 7, 9, 0]

如何使用 for 循环平铺混合嵌套的列表

你可以对混合和同质的数据类型使用Python for 循环。因此,无论一个嵌套列表只包含列表、图元、集合、字典,还是它们的混合物,它都能发挥作用。

nestedList = [[1, 3, 4], (1, 5, 6), {1, 2, 4}, {"e": 3, "o":9, "t":7}]
flatList = []
 
for i in nestedList:
    for k in i:
        flatList.append(k)
 
print(flatList)
 
# Output: [1, 3, 4, 1, 5, 6, 1, 2, 4, 'e', 'o', 't']

你也可以通过列表理解来实现这一点。

flatList = [k for i in nestedList for k in i]
 
print(flatList)
 
# Output: [1, 3, 4, 1, 5, 6, 1, 2, 4, 'e', 'o', 't']

随心所欲地操纵 Python 列表

Python 列表简化了你呈现和访问数据的方式,因为它很容易操作。虽然你已经看到了如何平移一个嵌套的 Python 列表,但仍有许多调整可以应用于列表,这取决于你的目标。例如,将一个 Python 列表转换为一个字典是另一项 Python 使之变得简单的普通任务。