Python에서 여러 개의 리스트를 동시에 반복(iteration)해야 할 때는 zip() 함수를 사용하면 됩니다. zip()은 n개의 이터러블(iterable)을 인자로 받아 튜플(tuple)들의 묶음을 반환하며, 각 튜플의 i번째 요소는 각 이터러블의 i번째 요소들로 구성됩니다.
기본 예제
L1 = [1, 2, 3, 4] L2 = ['aa', 'bb', 'cc', 'dd'] L = zip(L1, L2) print(list(L))
실행 결과:
[(1, 'aa'), (2, 'bb'), (3, 'cc'), (4, 'dd')]
위 결과에서 볼 수 있듯이, 두 리스트에서 같은 위치에 있는 요소들이 하나의 튜플로 묶여 반환됩니다.
알고리즘
Step 1: 사용자 입력으로 3개의 리스트를 생성한다. Step 2: zip() 함수를 사용한다. Step 3: 튜플을 출력한다.
예제 코드
아래 코드는 학생의 학번(Roll No.), 이름, 나이 세 가지 데이터를 각각 별도의 리스트에 저장한 뒤, zip() 함수를 이용해 세 리스트를 동시에 순회하는 예제입니다.
# zip 함수를 사용하여 3개의 리스트를 반복 처리하기
A = list()
B = list()
C = list()
n = int(input("저장할 데이터 개수는 몇 개인가요? "))
print("학번을 입력하세요.")
for i in range(n):
k = int(input(""))
A.append(k)
print("이름을 입력하세요.")
for j in range(n):
k1 = input("")
B.append(k1)
print("나이를 입력하세요.")
for j in range(n):
k1 = int(input(""))
C.append(k1)
print("\nzip으로 반복 출력")
for (a, b, c) in zip(A, B, C):
print(a, b, c)
실행 결과
저장할 데이터 개수는 몇 개인가요? 4 학번을 입력하세요. 56 89 67 34 이름을 입력하세요. yui jkl vm dfg 나이를 입력하세요. 7 9 6 5 zip으로 반복 출력 56 yui 7 89 jkl 9 67 vm 6 34 dfg 5
이처럼 zip() 함수를 활용하면 여러 리스트의 요소를 인덱스 연산 없이 깔끔하게 병렬 처리할 수 있어 코드의 가독성과 효율성이 크게 향상됩니다. 참고로 Python 3에서는 zip()이 제너레이터처럼 동작하는 zip 객체를 반환하므로, 전체 목록이 필요하다면 list()로 감싸 변환해야 합니다.