深度扁平化列表

PythonPythonBeginner
立即练习

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 来深度扁平化一个列表。在处理嵌套数据结构(如列表的列表)时,这种技术可能会很有用。