比如有一个list,嵌套了三层:
a = [[1, 2], ['a', 'b', [3, 4]]]
现在想将其变为:
a = [1, 2, '1', 'd', 3, 4]
也就是说,无论嵌套了多少层的list,我们都想将其flatten为一层的list。
解决方案:
实现一个递归函数:
def flatten(nest_list:list):
out = []
for i in nest_list:
if isinstance(i, list):
tmp_list = flatten(i)
for j in tmp_list:
out.append(j)
else:
out.append(i)
return out
其实可以更加简化:
def flatten(nest_list:list):
return [j for i in nest_list for j in flatten(i)] if isinstance(nest_list, list) else [nest_list]
测试输出:
a = [[1,2], ['a','b', [3, 4]]]
b = flatten(a)
print(b)
# 输出: [1, 2, 'a', 'b', 3, 4]
好用的话,记得来点赞。