포스트

Python에서 두 리스트 동시에 순회하기

for문과 zip 함수 사용하기

for 문과 zip 함수를 사용하면 Python에서 두 개 이상의 리스트를 동시에 순회할 수 있습니다. zip 함수는 여러 개의 이터러블을 인자로 받아 동일한 인덱스를 가진 요소를 튜플로 묶은 이터러블을 생성합니다.

1
2
3
4
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for num, char in zip(list1, list2):
    print(f"{num} and {char}")

위 코드를 실행하면, 다음과 같은 결과를 얻을 수 있습니다.

1
2
3
1 and a
2 and b
3 and c

enumerate와 zip 함께 사용하기

enumerate 함수를 zip과 함께 사용하면, 순회하는 동안 인덱스 값도 얻을 수 있습니다. enumerate 함수는 이터러블을 인자로 받아 인덱스와 값을 포함하는 튜플을 반환합니다.

1
2
3
4
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for index, (num, char) in enumerate(zip(list1, list2)):
    print(f"Index: {index}, Number: {num}, Character: {char}")

이 코드를 실행하면 다음과 같은 출력을 볼 수 있습니다.

1
2
3
Index: 0, Number: 1, Character: a
Index: 1, Number: 2, Character: b
Index: 2, Number: 3, Character: c

리스트의 길이가 다를 경우

zip 함수는 가장 짧은 리스트를 기준으로 순회를 종료합니다. 만약 두 리스트의 길이가 다르다면, itertools.zip_longest를 사용하여 두 리스트를 동시에 순회할 수 있습니다. 이 함수는 itertools 라이브러리에 포함되어 있으며, 길이가 짧은 리스트에 None을 채워 넣어 동일한 길이로 만들어 줍니다.

정리

Python에서 두 리스트를 동시에 순회하기 위해서는 zip 함수를 사용하는 것이 효율적입니다. enumerate를 추가로 사용하면, 순회 중인 인덱스 정보도 쉽게 얻을 수 있습니다. 리스트의 길이가 다른 경우에는 itertools.zip_longest를 사용하면 해결할 수 있습니다. 이러한 방법들을 알고 있으면, 여러 리스트를 동시에 쉽게 관리할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.