파이썬에서 여러 목록을 반복하는 방법

mo abdelazim 2023년1월30일
  1. Python 3.x의zip()함수
  2. Python 2.x의zip()함수
파이썬에서 여러 목록을 반복하는 방법

이 튜토리얼은 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

기본fillvalueNone이지만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

관련 문장 - Python List