Python은 뛰어난 데이터 조작 기능을 제공하는 언어입니다. 이 글에서는 두 개의 리스트에 담긴 요소들을 리스트 내 순서 그대로 하나씩 짝지어 연결(concatenate)하는 다양한 방법을 살펴보겠습니다.
zip 함수 활용하기
가장 간단하고 널리 쓰이는 방법은 zip 함수를 사용하는 것입니다. zip은 두 개의 리스트를 인자로 받아 같은 인덱스끼리 묶어주며, 이를 리스트 컴프리헨션(list comprehension)과 결합하면 각 요소 쌍을 손쉽게 하나의 문자열로 합칠 수 있습니다.
예제
listA = ["Outer-", "Frost-", "Sun-"]
listB = ['Space', 'bite', 'rise']
# 주어진 리스트
print("Given list A: ", listA)
print("Given list B: ", listB)
# zip 사용
res = [i + j for i, j in zip(listA, listB)]
# 결과 출력
print("The concatenated lists: ", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list A: ['Outer-', 'Frost-', 'Sun-'] Given list B: ['Space', 'bite', 'rise'] The concatenated lists: ['Outer-Space', 'Frost-bite', 'Sun-rise']
lambda와 map 함수 활용하기
map 함수는 전달받은 함수를 반복 가능한 객체의 모든 요소에 차례대로 적용합니다. 여기에 lambda 표현식을 함께 사용하면 zip으로 묶인 두 리스트의 요소 쌍을 하나씩 꺼내 연결할 수 있습니다.
참고로 아래 예제는 Python 3 문법에 맞게 작성되었습니다. 구버전(Python 2)에서 사용하던 lambda(i, j): i + j 형태는 Python 3에서 동작하지 않으므로, 튜플을 받아 인덱스로 접근하는 방식으로 처리해야 합니다.
예제
listA = ["Outer-", "Frost-", "Sun-"]
listB = ['Space', 'bite', 'rise']
# 주어진 리스트
print("Given list A: ", listA)
print("Given list B: ", listB)
# map과 lambda 사용
res = list(map(lambda pair: pair[0] + pair[1], zip(listA, listB)))
# 결과 출력
print("The concatenated lists: ", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list A: ['Outer-', 'Frost-', 'Sun-'] Given list B: ['Space', 'bite', 'rise'] The concatenated lists: ['Outer-Space', 'Frost-bite', 'Sun-rise']
정리
두 방법 모두 동일한 결과를 반환하지만, 일반적으로는 가독성이 좋고 직관적인 zip + 리스트 컴프리헨션 방식이 더 권장됩니다. map과 lambda를 조합한 방식은 함수형 프로그래밍 스타일을 선호하는 경우에 유용하게 활용할 수 있습니다.