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.

questionAnswers(4)

yourAnswerToTheQuestion