# [ACCEPTED]-Merge multiple 2d lists considering axis in order-axis

Accepted answer

You can use `zip`

and a list comprehension:

```
>>> a = [[1,2],[3,1]]
>>> b = [[3,6],[2,9]]
>>> c = [[5,1],[8,10]]
>>> [x+y+z for x,y,z in zip(a, b, c)]
[[1, 2, 3, 6, 5, 1], [3, 1, 2, 9, 8, 10]]
>>>
```

0

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 3 have an arbitrary number of 2D lists - for 2 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 1 is an example of argument unpacking.

This might be another solution using numpy 2 but this is much slower.

```
import numpy as np
a = [[1,2],[3,1]]
b = [[3,6],[2,9]]
c = [[5,1],[8,10]]
print np.hstack((np.hstack((a,b)),c))
# [[ 1 2 3 6 5 1]
# [ 3 1 2 9 8 10]]
```

and if you want 1 it to have a list format then use

```
np.hstack((np.hstack((a,b)),c)).tolist()
```

Source:
stackoverflow.com

More Related questions

Cookie Warning

We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.