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

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

1. + 연산자를 이용한 방법

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

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

list3 = list1 + list2
print(list3)

Output:

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

2. extend()를 이용한 방법

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

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

list1.extend(list2)
print(list1)

Output:

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

extend() 함수에 대한 자세한 내용은 "Python - 리스트 추가 (append, insert, extend)"를 참고해주세요.

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

4. flatten (평탄화)

위의 예제에서, 내부 리스트의 모든 데이터를 하나의 리스트로 만드려면(flatten) itertools를 이용하면 됩니다. 평탄화를 적용하려면 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]

5. 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])]

zip() 함수에 대한 자세한 내용은 "Python - zip으로 두개 리스트 묶기"를 참고해주세요.

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha