Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 여러 리스트를 동시에 반복하는 방법 – zip() 함수 활용 가이드

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()로 감싸 변환해야 합니다.