跳到主要内容

展开嵌套列表

展开多层嵌套的列表

形如 ["123", 4, 5, [6, 7, [8, "90"], 1], 2] 的列表进行展开

flatten
from collections import Iterable
from collections.abc import Iterable # Python 3.3+
from typing import Any, Generator

def flatten(items: Iterable[Any], ignore_types = (str, bytes)) -> Generator[Any, None, None]:
"""
Flatten the nested List, ignoring certain types.
"""
for item in items:
if (isinstance(item, ignore_types)):
yield item
elif isinstance(item, str):
yield from item
elif isinstance(item, Iterable):
yield from flatten(item, ignore_types)
else:
yield item

样例

e.g.
test = ["123", 4, 5, [6, 7, [8, "90"], 1], 2]

print([i for i in flatten(test)])
# ['123', 1, 2, 3, 4, 5, '69', 7, 8]
print([i for i in flatten(test, bytes)])
# ['1', '2', '3', 1, 2, 3, 4, 5, '6', '9', 7, 8]
请作者喝可乐🥤:
本文遵循 CC 4.0 BY-SA 版权协议,转载请标明出处