Python에서 두 개의 목록 병합

서로 다른 방법을 사용하여 두 목록을 연결하는 방법을 살펴보겠습니다. 파이썬 . 이 작업은 비슷한 방식으로 처리해야 하는 요소 목록이 많을 때 유용합니다.

  Input:    test_list1 = [1, 4, 5, 6, 5]  test_list2 = [3, 5, 7, 2, 5]   Output:    [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]   Explanation:   The output list is the list we get from Merging both the input list. 

Python 두 목록 결합

이 기사에서 다룰 방법은 다음과 같습니다.

Python에서 두 목록을 병합합니다. 순진한 방법 사용

이 방법에서는 두 번째 목록을 순회하고 첫 번째 목록에 요소를 계속 추가하여 첫 번째 목록이 두 목록의 모든 요소를 ​​갖게 되므로 다음 작업을 수행합니다. 첨부하다.

파이썬3




# Initializing lists> test_list1> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list2> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using naive method to concat> for> i> in> test_list2 :> > test_list1.append(i)> # Printing concatenated list> print> (> 'Concatenated list using naive method : '> > +> str> (test_list1))>

산출

Concatenated list using naive method : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

시간 복잡도: O(n + m), 여기서 n과 m은 각각 주어진 test_list1과 test_list2의 길이입니다.
보조 공간: 오(m)

+ 연산자를 사용하여 두 목록 연결

목록 연결을 수행하는 가장 일반적인 방법은 + 연산자 한 목록 전체를 다른 목록 뒤에 쉽게 추가하여 다음 작업을 수행할 수 있습니다. 연쇄.

파이썬3




# Initializing lists> test_list3> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list4> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using + operator to concat> test_list3> => test_list3> +> test_list4> # Printing concatenated list> print> (> 'Concatenated list using + : '> > +> str> (test_list3))>

산출

Concatenated list using + : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

시간 복잡도: O(n), 여기서 n은 두 목록의 총 요소 수입니다. + 연산자는 두 목록의 모든 요소를 ​​반복하여 연결하기 때문입니다.
보조 공간: O(n), 여기서 n은 두 목록의 총 요소 수입니다. 연결된 목록을 저장하기 위해 새 목록이 생성되기 때문입니다.

목록 이해를 사용하여 Python에서 두 목록 병합

목록 이해 목록 연결 작업도 수행할 수 있습니다. 이 경우 새 목록이 생성되지만 이 방법은 위에서 설명한 루프 방법에 대한 한 줄짜리 대안입니다.

파이썬3




# Python3 code to demonstrate list> # concatenation using list comprehension> # Initializing lists> test_list1> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list2> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using list comprehension to concat> res_list> => [y> for> x> in> [test_list1, test_list2]> for> y> in> x]> # Printing concatenated list> print> (> 'Concatenated list using list comprehension: '> > +> str> (res_list))>

산출

Concatenated list using list comprehension: [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

시간 복잡도: O(n + m), 여기서 n과 m은 주어진 test_list1과 test_list2의 길이입니다.
보조 공간: O(k), 여기서 k는 res_list의 길이입니다.

Extension()을 사용하여 두 목록을 병합합니다.

그만큼 연장하다() 는 Python에서 목록으로 확장된 함수이므로 이 작업을 수행하는 데 사용할 수 있습니다. 이 함수는 첫 번째 목록의 내부 확장을 수행합니다.

파이썬3




# Python3 code to demonstrate list> # concatenation using list.extend()> # Initializing lists> test_list3> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list4> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using list.extend() to concat> test_list3.extend(test_list4)> # Printing concatenated list> print> (> 'Concatenated list using list.extend() : '> > +> str> (test_list3))>

산출

Concatenated list using list.extend() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

Python * 연산자를 사용하여 두 목록 결합

* 연산자를 사용하는 이 방법은 목록 연결에 새로 추가되었으며 Python 3.6 이상에서만 작동합니다. 아니오. 이 연산자를 사용하면 개 목록을 연결하여 새 목록으로 반환할 수 있습니다.

파이썬3




# Python3 code to demonstrate list> # concatenation using * operator> # Initializing lists> test_list1> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list2> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using * operator to concat> res_list> => [> *> test_list1,> *> test_list2]> # Printing concatenated list> print> (> 'Concatenated list using * operator : '> > +> str> (res_list))>

산출

Concatenated list using * operator : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

Python itertools.chain()을 사용하여 두 목록 결합

그만큼 itertools.체인() 인수를 하나로 묶은 후 반복 가능한 항목을 반환하므로 초기 반복만 필요한 경우 연결된 목록을 저장할 필요가 없습니다. 이는 연결된 목록을 한 번만 사용해야 하는 경우에 유용합니다.

파이썬3




# Python3 code to demonstrate list> # concatenation using itertools.chain()> import> itertools> # Initializing lists> test_list1> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list2> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> # using itertools.chain() to concat> res_list> => list> (itertools.chain(test_list1, test_list2))> # Printing concatenated list> print> (> 'Concatenated list using itertools.chain() : '> > +> str> (res_list))>

산출

Concatenated list using itertools.chain() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

두 목록 연결 Reduce() 함수를 사용하여

먼저 다음에서 축소 함수를 가져와야 합니다. 기능 도구 도서관. 그런 다음 두 개의 서로 다른 목록을 보유하는 두 개의 변수를 초기화합니다. 이제 이전 단계에서 가져온 모든 목록을 저장할 또 다른 목록을 사용하겠습니다. 중첩된 목록을 구성해야 합니다. 이제 축소() 함수를 사용하고 해당 중첩 목록을 두 변수와 함께 매개변수로 전달합니다(두 개의 목록을 선택하는 경우). 그리고 익명 기능을 사용하세요 람다 연결 작업을 수행하고 목록에 저장합니다.

파이썬3




from> functools> import> reduce> test_list1> => [> 1> ,> 4> ,> 5> ,> 6> ,> 5> ]> test_list2> => [> 3> ,> 5> ,> 7> ,> 2> ,> 5> ]> nested_list> => [test_list1,test_list2]> print> (> reduce> (> lambda> i,j:i> +> j,nested_list,[]))>

산출

[1, 4, 5, 6, 5, 3, 5, 7, 2, 5] 

시간 복잡도: O(n+m), n은 첫 번째 목록의 길이이고, m은 두 번째 목록의 길이입니다.
보조 공간: O(n), n은 고려되는 목록의 수입니다.