简介
在 Python 中,列表(list)可以包含其他列表作为元素,而这些列表又可以包含更多列表作为元素,从而形成嵌套结构。将嵌套列表扁平化的过程意味着将其转换为一维列表,其中所有元素都处于同一层级。在这个挑战中,你将被要求编写一个函数,对列表进行深度扁平化,即递归地扁平化所有嵌套列表。
在 Python 中,列表(list)可以包含其他列表作为元素,而这些列表又可以包含更多列表作为元素,从而形成嵌套结构。将嵌套列表扁平化的过程意味着将其转换为一维列表,其中所有元素都处于同一层级。在这个挑战中,你将被要求编写一个函数,对列表进行深度扁平化,即递归地扁平化所有嵌套列表。
编写一个函数 deep_flatten(lst),它接受一个列表 lst 作为参数,并返回一个新列表,该列表是 lst 的深度扁平化版本。该函数应使用递归,并使用 isinstance() 函数与 collections.abc.Iterable 来检查一个元素是否可迭代。如果一个元素是可迭代的,该函数应递归地对该元素应用 deep_flatten()。否则,该函数应返回一个只包含该元素的列表。
from collections.abc import Iterable
def deep_flatten(lst):
return ([a for i in lst for a in
deep_flatten(i)] if isinstance(lst, Iterable) else [lst])
deep_flatten([1, [2], [[3], 4], 5]) ## [1, 2, 3, 4, 5]
在这个挑战中,你已经学会了如何使用递归以及 isinstance() 函数和 collections.abc.Iterable 来深度扁平化一个列表。在处理嵌套数据结构(如列表的列表)时,这种技术可能会很有用。