Python 将嵌套列表转换为一维列表

Python 将嵌套列表转换为一维列表

展平一个浅列表意味着将嵌套列表转换为简单的一维列表。换句话说,将多维列表转换为一维列表。

展平的过程可以通过使用不同的技术来完成,如嵌套的for循环,列表推导式,列表拼接和使用内置函数。

在本文中,我们将讨论几种展平一个浅Python列表的技术。

使用嵌套的for循环

通过使用嵌套的for循环和list.append()方法,我们可以展平浅列表。让我们看看并了解如何在程序中实现这一点。

示例

通过使用嵌套的for循环,这个简单的示例成功地展平了一个浅列表。第一个循环用于迭代列表中的子列表,第二个循环用于迭代子列表中的项。

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = []   
for sub_li in li:
    for ele in sub_li:
        flatlist.append(ele)
print("After flattening :", flatlist)

输出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
After flattening : [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

使用列表推导式

这种技术与嵌套的 for 循环非常相似,上面的解决方案使用列表推导式在一行中实现。

列表推导式 是一种基于现有可迭代对象(列表、字符串、元组)创建列表的简单而优雅的方法。

语法

newList = [ expression(element) for element in oldList if condition ]

示例

我们使用列表推导方法在一行代码中将一个浅列表展平。

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = [ele for ele in sub_li for sub_li in li]   

print("List after flattening :", flatlist)

输出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
List after flattening : [90, 90, 90, 100, 100, 100, 110, 110, 110, 120, 120, 120]

使用itertools(chain())

chain()是一个接受一系列可迭代对象的方法,然后返回一个单一的可迭代对象,不能直接使用,必须明确转换。要访问chain()方法,首先需要在程序中导入itertools模块。

语法

chain (*iterables)

示例

要解开嵌套的列表,我们提到了*运算符。

import itertools

li = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
print("Original shallow list:", li)

flatlist = list(itertools.chain(*li))
print("List after flattening :", flatlist)

输出

Original shallow list: [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
List after flattening : [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

使用sum()函数

对内部列表(子列表)求和是另一种解决方案。在这里,我们将使用Python内置函数sum()。

语法

sum(iterable, start)

示例

在这个示例中,参数iterable接受一个列表的列表,而start是一个空列表,作为初始的扁平列表,内部子列表的项将被添加到其中。

li = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
print("Original shallow list:", li)

faltlist = sum(li, [])
print("List after flattening :", faltlist)

输出

Original shallow list: [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
List after flattening : [1, 2, 3, 4, 5, 6, 7, 8, 9]

我们已经讨论了一些将浅层python列表压平的技术。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程