用递归法求解列表不规则嵌套
l = [1, 2, 3, [4, 5, 6],[7, 8, 9, [10, (11, 12)]], ('a', 'b', ('c', 'd', ('e', 'f')))]
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'a', 'b','c', 'd', 'e', 'f']
# chain函数, 这个函数只能展开均匀的嵌套
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
l = [1, 2, 3, 4, 5, 6, 7, 8, 9,]
# 有缓存
def flatten(l, l1):
l1 = []
if str(l) in buffer:
return buffer[str(l)]
else:
for i in l:
if type(i) not in (list, tuple, set):
l1.append(i)
else:
l1.extend(flatten(i, l1))
buffer[str(l)] = l1
return l1
if __name__ =='__main__':
l = [1, 2, 3, [4, 5, 6],[7, 8, 9, [10, (11, 12)]], ('a', 'b', ('c', 'd', ('e', 'f')))]
buffer = {}
l = flatten(l, buffer)
print(l)