Python - 두개의 리스트 하나로 합치기

JS · 02 Jan 2021

두개의 리스트를 하나로 병합하는 방법을 소개합니다.

  • + 연산자를 이용한 방법
  • extend()를 이용한 방법
  • zip을 이용한 방법

+ 연산자를 이용한 방법

다음과 같이 + 연산자를 이용하여 두개의 리스트를 하나로 합칠 수 있습니다.

list1 = [10, 22, 19]
list2 = [2, 9, 3]

list3 = list1 + list2
print(list3)

Output:

[10, 22, 19, 2, 9, 3]

extend()를 이용한 방법

다음과 같이 extend() 연산자를 이용하여 두개의 리스트를 하나로 합칠 수 있습니다. + 연산자와 다르게 새로운 리스트를 리턴하지 않고, list1에 list2의 내용이 추가됩니다.

list1 = [10, 22, 19]
list2 = [2, 9, 3]

list1.extend(list2)
print(list1)

Output:

[10, 22, 19, 2, 9, 3]

map()을 이용한 방법

만약 다음과 같이 list1list2merged_list처럼 만드려고 할 때는 map()을 사용할 수 있습니다. 같은 위치의 list끼리 병합됩니다.

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]
merged_list = [[1, 10, 4, 2], [2, 22, 5, 9], [3, 19, 6, 3]]

다음과 같이 구현할 수 있습니다.

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(map(list.__add__, list1, list2))
print(list3)

Output:

[[1, 10, 4, 2], [2, 22, 5, 9], [3, 19, 6, 3]]

flatten

위의 예제에서, 내부 리스트의 모든 데이터를 하나의 리스트로 만드려면(flatten) itertools를 이용하면 됩니다. flatten을 적용하려면 chain(*list3)처럼 *를 리스트에 붙여주어야 합니다.

import itertools

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(map(list.__add__, list1, list2))
list4 = list(itertools.chain(*list3))
print(list4)

Output:

[1, 10, 4, 2, 2, 22, 5, 9, 3, 19, 6, 3]

zip을 이용한 방법

만약 다음과 같이 list1list2merged_list처럼 만드려고 할 때는 zip()을 사용할 수 있습니다. 단순히 동일한 위치의 list를 하나의 tuple로 묶어줍니다.

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]
merged_list = [([1, 10], [4, 2]), ([2, 22], [5, 9]), ([3, 19], [6, 3])]

다음과 같이 구현할 수 있습니다.

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(zip(list1, list2))
print(list3)

Output:

[([1, 10], [4, 2]), ([2, 22], [5, 9]), ([3, 19], [6, 3])]
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha