파이썬으로 데이터를 다루다 보면 두 개의 리스트를 합치면서 각 요소를 인덱스 기준으로 쌍(pair)으로 연결해야 하는 경우가 종종 있습니다. 예를 들어 첫 번째 리스트의 0번째 요소를 두 번째 리스트의 0번째 요소와 연결하고, 그다음 인덱스도 같은 방식으로 이어가는 작업입니다.
이 글에서는 이러한 매칭 작업을 수행하는 두 가지 방법을 소개합니다.
1. tuple 함수 활용하기
tuple 함수를 사용하면 각 리스트의 요소를 순서대로 가져와 서로 맞춰줄 수 있습니다. 먼저 출력될 결과의 형식(패턴)을 담은 임시 문자열을 만들고, 여기에 두 리스트를 차례로 적용하는 방식입니다.
예제 코드
listA = ['day1', 'day2', 'day3']
listB = ['Mon', 'Tue', 'Fri']
# 주어진 리스트
print("Given list A is : " ,listA)
print("Given list B is : " ,listB)
# 리스트 요소 매칭
temp = len(listA) * '% s = %% s, '
res = temp % tuple(listA) % tuple(listB)
# 결과 출력
print("Paired lists : " , res)실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Given list A is : ['day1', 'day2', 'day3'] Given list B is : ['Mon', 'Tue', 'Fri'] Paired lists : day1 = Mon, day2 = Tue, day3 = Fri,
2. join과 zip 함수 활용하기
zip 함수는 여러 리스트의 요소를 순서대로 묶어주는 역할을 하며, join 함수는 묶인 쌍들에 원하는 출력 패턴을 적용합니다. 이 방식이 코드도 더 간결하고 파이썬다운(Pythonic) 방법으로 널리 권장됩니다.
예제 코드
listA = ['day1', 'day2', 'day3']
listB = ['Mon', 'Tue', 'Fri']
# 주어진 리스트
print("Given list A is : " ,listA)
print("Given list B is : " ,listB)
# 리스트 요소 매칭
res= ', '.join('% s = % s' % i for i in zip(listA, listB))
# 결과 출력
print("Paired lists : " , res)실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Given list A is : ['day1', 'day2', 'day3'] Given list B is : ['Mon', 'Tue', 'Fri'] Paired lists : day1 = Mon, day2 = Tue, day3 = Fri
정리
두 방법 모두 동일한 결과를 얻을 수 있지만, zip과 join을 조합한 두 번째 방법이 가독성이 좋고 유지보수하기 쉬워 실무에서 더 많이 사용됩니다. 참고로 두 리스트의 길이가 다르면 zip은 더 짧은 리스트를 기준으로 매칭되므로, 길이가 다른 리스트를 다룰 때는 itertools.zip_longest 사용을 고려해 볼 수 있습니다.