flatten = lambda arr: reduce(lambda x, y: ((isinstance(y, (list, tuple)) or x.append(y)) and x.extend(flatten(y))) or x, arr, []) def flatten(array): """ Returns a list o flatten elements of every inner lists (or tuples) ****RECURSIVE**** """ res = [] for el in array: if isinstance(el, (list, tuple)): res.extend(flatten(el)) continue res.append(el) return res >>> a = [0, 10, 20, [30, (40, 50, [60, [70, [80]], {'hello': 'world'}]), 90], set(['world', 'hello'])] >>> flatten(a) [0, 10, 20, 30, 40, 50, 60, 70, 80, {'hello': 'world'}, 90, set(['world', 'hello'])]