Achatando uma lista recursivamente [duplicado]
Duplicata Possível:
Achatar (uma lista irregular) de listas em Python
Estou tendo problemas para usar python para achatar uma lista recursivamente. Eu vi um número de métodos que exigem compreensão de lista e vários métodos que exigem importações no entanto eu estou procurando um método muito básico para achatar recursivamente uma lista de profundidade variável que não usa nenhum loop for também. Eu tive uma série de testes, no entanto, existem dois que não posso passar
flatten([[[[]]], [], [[]], [[], []]]) # empty multidimensional list
flatten([[1], [2, 3], [4, [5, [6, [7, [8]]]]]]) # multiple nested list
Meu código
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:])
Eu apreciaria algum conselho.