두 개의 문자열 튜플(tuple)을 연결해야 하는 상황이라면 zip 메서드와 제너레이터 표현식(generator expression)을 활용하면 간단하게 해결할 수 있습니다.
zip 메서드는 여러 개의 반복 가능한 객체(iterable)를 인자로 받아, 각 객체에서 같은 위치의 요소들을 하나의 튜플로 묶어준 뒤 그 결과를 반환합니다.
제너레이터(generator)는 이터레이터(iterator)를 손쉽게 만들 수 있는 방법입니다. __iter__()와 __next__() 메서드가 구현된 클래스를 자동으로 생성해 주며, 내부 상태를 스스로 추적하고 더 이상 반환할 값이 없을 때는 StopIteration 예외를 발생시킵니다.
아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
예제 코드
my_tuple_1 = ('Jane', 'Pink', 'El')
my_tuple_2 = ('Will', 'Mark', 'Paul')
print("The first tuple is : ")
print(my_tuple_1)
print("The second tuple is : ")
print(my_tuple_2)
my_result = tuple(elem_1 + elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))
print("The concatenated tuple is : ")
print(my_result)실행 결과
The first tuple is :
('Jane', 'Pink', 'El')
The second tuple is :
('Will', 'Mark', 'Paul')
The concatenated tuple is :
('JaneWill', 'PinkMark', 'ElPaul')코드 설명
- 두 개의 문자열 튜플을 정의한 뒤 콘솔에 출력하여 확인합니다.
zip메서드를 사용해 두 튜플의 요소들을 위치별로 짝지어 묶습니다.- 묶인 요소 쌍마다 첫 번째 튜플의 요소와 두 번째 튜플의 요소를 더하기(+) 연산으로 연결합니다.
- 연결된 결과들을
tuple()함수로 감싸 최종적으로 튜플 형태로 변환합니다. - 이렇게 얻은 결과를 변수에 할당합니다.
- 마지막으로 해당 변수를 출력하면 연결된 튜플이 콘솔에 표시됩니다.