可能重复:
在 Python 中展平(不规则)列表列表
我在使用 python 递归展平列表时遇到问题。我已经看到了许多需要列表理解的方法和各种需要导入的方法,但是我正在寻找一种非常基本的方法来递归地展平不使用任何 for 循环的不同深度的列表。我进行了一系列测试,但是有两个我无法通过
flatten([[[[]]], [], [[]], [[], []]]) # empty multidimensional list
flatten([[1], [2, 3], [4, [5, [6, [7, [8]]]]]]) # multiple nested list
我的代码
def flatten(test_list):
#define base case to exit recursive method
if len(test_list) == 0:
return []
elif isinstance(test_list,list) and type(test_list[0]) in [int,str]:
return [test_list[0]] + flatten(test_list[1:])
elif isinstance(test_list,list) and isinstance(test_list[0],list):
return test_list[0] + flatten(test_list[1:])
else:
return flatten(test_list[1:])
我会很感激一些建议。