복붙노트

[PYTHON] 파이썬에서리스트 삽입하기 [duplicate]

PYTHON

파이썬에서리스트 삽입하기 [duplicate]

두 가지 목록이 있습니다. [a, b, c] [d, e, f] 내가 원하는: [a, d, b, e, c, f]

파이썬에서이 작업을 수행하는 간단한 방법은 무엇입니까?

해결법

  1. ==============================

    1.하나의 옵션은 chain.from_iterable ()과 zip ()의 조합을 사용하는 것입니다.

    하나의 옵션은 chain.from_iterable ()과 zip ()의 조합을 사용하는 것입니다.

    # Python 3:
    from itertools import chain
    list(chain.from_iterable(zip(list_a, list_b)))
    
    # Python 2:
    from itertools import chain, izip
    list(chain.from_iterable(izip(list_a, list_b)))
    

    편집 : 의견에서 sr2222에 의해 지적한대로이 작동하지 않습니다. 리스트의 길이가 다른 경우. 이 경우에 따라 원하는 의미론, (훨씬 더 일반적인) roundrobin ()을 사용하는 것이 좋습니다. 레시피의 기능 섹션 itertools 문서 :

    def roundrobin(*iterables):
        "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
        # Recipe credited to George Sakkis
        pending = len(iterables)
        nexts = cycle(iter(it).next for it in iterables)
        while pending:
            try:
                for next in nexts:
                    yield next()
            except StopIteration:
                pending -= 1
                nexts = cycle(islice(nexts, pending))
    
  2. ==============================

    2.다음은 목록 이해력을 사용하는 매우 간단한 방법입니다.

    다음은 목록 이해력을 사용하는 매우 간단한 방법입니다.

    >>> lists = [['a', 'b', 'c'], ['d', 'e', 'f']]
    >>> [x for t in zip(*lists) for x in t]
    ['a', 'd', 'b', 'e', 'c', 'f']
    

    또는 목록을 별도의 변수로 사용했다면 (다른 답변과 마찬가지로) :

    [x for t in zip(list_a, list_b) for x in t]
    
  3. ==============================

    3.이것은 파이썬 2.x에서만 작동하지만 길이가 다른 목록에서도 작동합니다 :

    이것은 파이썬 2.x에서만 작동하지만 길이가 다른 목록에서도 작동합니다 :

    [y for x in map(None,lis_a,lis_b) for y in x]
    
  4. ==============================

    4.내장 함수를 사용하여 간단한 작업을 수행 할 수 있습니다.

    내장 함수를 사용하여 간단한 작업을 수행 할 수 있습니다.

    sum(zip(list_a, list_b),())
    
  5. from https://stackoverflow.com/questions/11125212/interleaving-lists-in-python by cc-by-sa and MIT license