📅  最后修改于: 2023-12-03 15:04:15.908000             🧑  作者: Mango
在Python中,我们有时会遇到需要取消嵌套列表的情况。这种情况可能会出现在一些算法和数据挖掘任务中。
本文将介绍几种方法来取消嵌套嵌套列表。
使用列表展开是最常见的方法之一。只需将所有嵌套列表中的元素合并成一个列表即可取消嵌套。
nested_lst = [[1, 2], [3, 4], [5, 6]]
flat_lst = [elem for sublist in nested_lst for elem in sublist]
print(flat_lst)
输出为:
[1, 2, 3, 4, 5, 6]
递归是一种常用的算法,也可以用于取消嵌套嵌套列表。通过递归实现,即从嵌套列表中取出元素,如果元素不是列表,则添加到新列表中,如果元素是列表,则进行递归。
def flatten(lst):
flat_lst = []
for item in lst:
if isinstance(item, list):
flat_lst.extend(flatten(item))
else:
flat_lst.append(item)
return flat_lst
nested_lst = [[1, 2], [3, 4], [5, [6, 7]], [[[8], 9]]]
flat_lst = flatten(nested_lst)
print(flat_lst)
输出为:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
还可以使用Python标准库中的itertools模块来取消嵌套嵌套列表。
import itertools
nested_lst = [[1, 2], [3, 4], [5, [6, 7]], [[[8], 9]]]
flat_lst = list(itertools.chain.from_iterable(nested_lst))
print(flat_lst)
输出为:
[1, 2, 3, 4, 5, [6, 7], [[8], 9]]
需要注意的是,使用itertools模块并不能完全取消嵌套,而是将所有元素合并成了一个列表。
本文介绍了三种常用的方法来取消嵌套嵌套列表,包括使用列表展开、使用递归和使用itertools模块。需要根据具体场景选择合适的方法。