我有一个列表l = [2, 9, [1, 13], 8, 6]
,我需要递归展平以获得l = [2, 9, 1, 13, 8, 6]
。我找不到办法。
PS - 截至撰写本文时,我在相关问题列表中找不到与我的疑问相符的任何问题。所以,如果这是重复的,那么请指出我的问题,而不是燃烧我。 :)
答案 0 :(得分:6)
如果你想展平任意嵌套的iterables,你可以试试这个函数:
def flatten(x):
try:
it = iter(x)
except TypeError:
yield x
else:
for i in it:
for j in flatten(i):
yield j
示例:
a = [2, 9, [1, 13], 8, 6]
list(flatten(a))
# [2, 9, 1, 13, 8, 6]
请注意,该函数还会将字符串展平为单个字符。