def deepFlatten(lista): ''' >>> list(deepFlatten([1,2,[], [1], 3, [4, [5,6]], 7, 'oi', None])) => [1, 2, 1, 3, 4, 5, 6, 7, 'o', 'i', None] ''' try: for item in lista: for one in deepFlatten(item): yield one except: yield lista