파이썬에서 두 개의 목록을 어떻게 연결합니까?


질문

 

파이썬에서 두 개의 목록을 어떻게 연결합니까?

예시:

listone = [1, 2, 3]
listtwo = [4, 5, 6]

예상되는 결과:

>>> joinedlist
[1, 2, 3, 4, 5, 6]

답변

 

+ 연산자를 사용하여 결합 할 수 있습니다.

listone = [1, 2, 3]
listtwo = [4, 5, 6]

joinedlist = listone + listtwo

산출:

>>> joinedlist
[1, 2, 3, 4, 5, 6]


답변

파이썬> = 3.5 대안 : [* L1, * L2]

다른 대안은 언급 할 자격이있는 PEP 448의 수용을 통해 도입되었습니다.

PEP는 추가 포장 풀기를 풀어주는 일반적으로 파이썬에서 StarRed * Expression을 사용할 때 일반적으로 일부 구문 제한을 줄입니다.이제 두 개의 목록 (객실이있는 모든 것에 적용)에 참여할 수 있습니다.

>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> joined_list = [*l1, *l2]  # unpack both iterables in a list literal
>>> print(joined_list)
[1, 2, 3, 4, 5, 6]

이 기능은 Python 3.5에 대해 정의되었으며 3.x 제품군의 이전 버전으로 백 포메이션되지 않았습니다.지원되지 않는 버전에서 SyntaxError가 발생할 수 있습니다.

다른 접근 방식과 마찬가지로, 이는 해당 목록의 요소의 얕은 복사본으로 작성됩니다.


이 접근 방식에 대한 상승 여력은 실제로 그것을 수행하기 위해 목록이 필요하지 않습니다.PEP에 명시된대로 :

이것은 또한 iterables를 list, 예 : my_list + list (my_tuple) + 목록 (my_range) 이제 [* my_list, * my_tuply, * my_range]와 같습니다.

그래서 +가 첨가하면 유형이 불일치로 인해 TypeError가 발생합니다.

l = [1, 2, 3]
r = range(4, 7)
res = l + r

다음은 다음과 같습니다.

res = [*l, *r]

먼저 iterables의 내용을 포장하고 있기 때문에 내용에서 목록을 만드는 것만으로 만듭니다.



답변

또한 iTertools.chain ()을 사용하여 두 목록에서 항목을 반복하는 생성기를 만드는 것도 가능합니다.이렇게하면 항목을 새 목록으로 복사하지 않고 처리 할 수있는 목록 (또는 iterable)을 함께 사용할 수 있습니다.

import itertools
for item in itertools.chain(listone, listtwo):
    # Do something with each list item


답변

list.extend () 메소드를 다른 하나의 끝에 추가하려면 list.extend () 메소드를 사용할 수도 있습니다.

listone = [1,2,3]
listtwo = [4,5,6]

listone.extend(listtwo)

원래 목록을 그대로 유지하려면 새 목록 개체를 만들고 두 목록을 모두 확장 할 수 있습니다.

mergedlist = []
mergedlist.extend(listone)
mergedlist.extend(listtwo)


답변

세트를 사용하여 고유 한 값의 병합 된 목록을 가져올 수 있습니다.

mergedlist = list(set(listone + listtwo))


답변

파이썬에서 두 개의 목록을 어떻게 연결합니까?

3.9 %는 파이썬에서 2 개의 (또는 그 이상) 목록을 연결하기위한 가장 인기있는 STDLIB 방법입니다.

python

각주 이것은 그것의 간결 때문에 매끄러운 솔루션입니다.그러나 합계는 쌍으로 패션의 연결을 수행합니다. 이는 이것이 각 단계마다 메모리가 할당되어야합니다.하다 목록이 크면 사용하지 마십시오. 체인을 참조하십시오 그리고 chain.from_iterable. 문서에서.먼저 IterTools를 가져와야합니다. 연결은 메모리에서 선형이므로 이것은 성능 및 버전 호환성.Chain.From_iterable은 2.6에 소개되었습니다. 이 방법은 추가 포장 풀기 (PEP 448)를 사용하지만 할 수는 없습니다. 수동으로 각각의 포장을 풀지 않으면 n 목록으로 일반화하십시오. a + = b 및 a.extend (b)는 모든 실제적인 목적으로 더 많거나 적당합니다.+ = 목록에서 호출 할 때 내부적으로 호출됩니다. 목록 .__ iadd__, 두 번째 목록을 확장합니다.

python

 

1. The iadd (+=) and extend methods operate in-place, so a copy has to be generated each time before testing. To keep things fair, all methods have a pre-copy step for the left-hand list which can be ignored.출처:https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python