My purpose is to combine multiple 2d list in order such as:
a = [[1,2],[3,1]]
b= [[3,6],[2,9]]
c = [[5,1],[8,10]]
Expected: [[1,2,3,6,5,1],[3,1,2,9,8,10]]
>
You could use itertools.chain.from_iterable():
>>> a = [[1, 2], [3, 1]]
>>> b = [[3, 6], [2, 9]]
>>> c = [[5, 1], [8, 10]]
>>> from itertools import chain
>>> [list(chain.from_iterable(x)) for x in zip(a, b, c)]
[[1, 2, 3, 6, 5, 1], [3, 1, 2, 9, 8, 10]]
This might be handy if you have an arbitrary number of 2D lists - for example:
>>> list_of_lists = [
... [[1, 2], [3, 1]],
... [[3, 6], [2, 9]],
... [[5, 1], [8, 10]],
... # ...
... [[4, 7], [11, 12]]
... ]
>>> [list(chain.from_iterable(x)) for x in zip(*list_of_lists)]
[[1, 2, 3, 6, 5, 1, ..., 4, 7], [3, 1, 2, 9, 8, 10, ..., 11, 12]]
Note the *
before list_of_lists
in this last example, which is an example of argument unpacking.