深度展平列表

深度展平一个列表。

  • 使用递归。
  • 使用isinstance()collections.abc.Iterable来检查一个元素是否可迭代。
  • 如果可迭代,递归应用deep_flatten(),否则返回[lst]
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]