How i can sort multidimensional list to two-dimensional list?
Multidimensional input: [8, [6, 7, [-1], [4, [[10]]], 2], 1]
Desired two-dimension
The recursive approach taken by the other answers comes with the recursion limit imposed by Python and the overhead of two passes. A more efficient one-pass iterative approach is to implement breadth-first search using a queue of tuples of lists and associated depths:
from collections import deque
def flatten(lst):
output = []
q = deque([(lst, 0)])
while q:
l, depth = q.popleft()
for i in l:
if isinstance(i, list):
q.append((i, depth + 1))
else:
while depth >= len(output):
output.append([])
output[-1].append(i)
return output
so that:
flatten([8, [6, 7, [-1], [4, [[10]]], 2], 1])
returns:
[[8, 1], [6, 7, 2], [-1, 4], [], [10]]