简介
在 Python 中,列表(list)可以包含其他列表作为元素,而这些列表又可以包含更多列表作为元素,从而形成嵌套结构。将嵌套列表扁平化的过程意味着将其转换为一维列表,其中所有元素都处于同一层级。在这个挑战中,你将被要求编写一个函数,对列表进行深度扁平化,即递归地扁平化所有嵌套列表。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在 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
来深度扁平化一个列表。在处理嵌套数据结构(如列表的列表)时,这种技术可能会很有用。