📅  最后修改于: 2023-12-03 15:19:02.005000             🧑  作者: Mango
在Python编程中,经常会遇到多维列表的情况,有时候需要将嵌套的列表展平为一维,方便我们处理数据。本文将介绍两种展平嵌套列表的方法。
递归函数是指自己调用自己的函数,这种函数可以很好地处理多维列表的情况。以下是展平嵌套列表的递归函数代码:
def flatten_list(nested_list):
"""
将嵌套列表展平为一维列表
"""
result = []
for item in nested_list:
if isinstance(item, (list, tuple)):
result.extend(flatten_list(item))
else:
result.append(item)
return result
这个函数接受一个嵌套列表作为输入,返回一个展平后的一维列表。函数的核心代码是一个递归循环,当遇到一个列表或元组时,就递归调用函数本身,将遇到的每个元素都展平到结果列表中。
另一个展平列表的方法是使用Python的yield关键字创建一个生成器。以下是展平嵌套列表的生成器代码:
def flatten_generator(nested_list):
"""
将嵌套列表展平为一维列表
"""
for item in nested_list:
if isinstance(item, (list, tuple)):
yield from flatten_generator(item)
else:
yield item
这个生成器的语法略微有点复杂,但是它也可以很好地展平嵌套列表。类似于递归函数,当遇到一个列表或元组时,生成器就使用yield from关键字递归调用自己,直到遇到一个基本类型的元素,然后再使用yield关键字将该元素返回。
以上介绍了两种展平嵌套列表的方法,递归函数和生成器。这两种方法都可以用来展平任意维度的嵌套列表,但使用生成器更加高效,因为其实时地生成结果,而不是在内存中创建一个临时的列表。当处理大量数据时,使用生成器更能节省内存的开销。