1. 程式人生 > >python 展開巢狀的序列

python 展開巢狀的序列

將一個多層巢狀的序列展開成一個單層列表

可以寫一個包含yield from 語句的遞迴生成器來輕鬆解決這個問題。

from collections import Iterable
def flatten(items, ignore_types=(str, bytes)):
for x in items:
if isinstance(x, Iterable) and not isinstance(x, ignore_types):
yield from flatten(x)
else:
yield x
items = [1, 2, [3, 4, [5, 6], 7], 8]
# Produces 1 2 3 4 5 6 7 8
for x in flatten(items):
print(x)

bb=list(flatten(items))
print(bb)