深度展平列表
深度展平一个列表。
- 使用递归。
- 使用
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]