Merge multiple 2d lists considering axis in order

前端 未结 3 1778
予麋鹿
予麋鹿 2021-01-13 11:50

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]]
         


        
3条回答
  •  不知归路
    2021-01-13 12:12

    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.

提交回复
热议问题