파이썬에서 여러 목록을 반복하는 방법
mo abdelazim
2023년1월30일
이 튜토리얼은 Python에서 동시에 두 개의 목록/튜플을 반복하는 방법을 설명합니다. zip()
및 itertools.zip_longest()
두 가지 차이점과 각각의 사용 방법을 설명합니다. 또한 파이썬 2와 3에서zip()
반환 유형이 어떻게 다른지 살펴볼 것입니다.
Python 3.x의zip()
함수
zip()
함수는 여러 목록 / 튜플을 인수로 받아들이고 튜플의 반복자 인zip
객체를 반환합니다.
zip()
을 사용하여 두 목록을 반복합니다
두 목록을 모두zip()
함수에 전달하고 for 루프를 사용하여 결과 반복기를 반복합니다.
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
출력:
1 10
2 20
3 30
4 40
길이가 다른 두 목록을 반복하려면zip()
을 사용하십시오
목록의 길이가 다른 경우 가장 짧은 목록이 끝나면zip()
이 중지됩니다. 아래 코드를 참조하십시오.
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
출력:
1 10
2 20
3 30
4 40
itertools.zip_longest()
를 사용하여 두 목록을 반복합니다
가장 긴 목록이 끝날 때까지 두 목록을 반복해야하는 경우itertools.zip_longest()
를 사용하십시오. 가장 긴 목록이 끝나면 중지된다는 점을 제외하면zip()
함수와 동일하게 작동합니다.
빈 값을 None
으로 채우고 튜플의 반복자를 반환합니다.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB):
print(a, b)
출력:
1 10
2 20
3 30
4 40
5 None
6 None
기본fillvalue
는 None
이지만fillvalue
를 임의의 값으로 설정할 수 있습니다.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB, fillvalue=0):
print(a, b)
출력:
1 10
2 20
3 30
4 40
5 0
6 0
여러 목록에zip()
사용
zip()
및 그 형제 함수는 두 개 이상의 목록을 허용 할 수 있습니다.
import itertools
codes = [101, 102, 103]
students = ["James", "Noah", "Olivia"]
grades = [65, 75, 80]
for a, b, c in itertools.zip_longest(codes, students, grades, fillvalue=0):
print(a, b, c)
출력:
101 James 65
102 Noah 75
103 Olivia 80
Python 2.x의zip()
함수
Python 2.x의zip()
함수는 여러 목록 / 튜플을 인수로 허용하지만 튜플 목록을 반환합니다. 작은 목록에서는 잘 작동하지만 큰 목록이있는 경우에는 튜플의 반복자를 반환하므로 대신itertools.izip()
을 사용해야합니다.
itertools.izip()
을 사용하여 두 목록을 반복합니다
import itertools
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in itertools.izip(listA, listB):
print(a, b)
출력:
1 10
2 20
3 30
4 40