Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

파이썬 내장 함수 Enumerate, Zip 본문

프로그래밍 언어/파이썬

파이썬 내장 함수 Enumerate, Zip

야식은진리다 2021. 6. 6. 01:14

Enumerate

파이썬에는 enumerate() 라는 내장함수가 존재한다. 이 함수는 매개변수로 iterable한 데이터를 받는데, 이 enumerate() 함수에 의해 반환된 iterator의 __next__() 메서드는 기본적으로 0부터 시작하는 카운트와 iterable 객체를 이터레이션해서 얻어지는 값을 포함하는 튜플을 돌려준다.

 

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

 

Zip

zip() 함수는 iterable한 객체를 가변인자로 받는다. 하는 일은 한마디로 전달 받은 이터러블값들을 병렬적으로 추출해 튜플로 반환하는 것, 다른말로 zip()에 의해 반환된 i번째 튜플은 전달된 각 iterable의 i번째 요소를 포함하는 튜플이된다.

iterator은 가장 짧은 iterable이 소모되면 멈추게 된다. 그러므로 길이가 맞지 않는 iterable들로 zip() 함수를 사용하는것은 더 긴 iterable들의 값들에 신경쓰지 않는 경우로 제한하여야한다. 단 그 값들이 중요하다면 itertool.zip_longest()를 사용하여 해결할 수 있다.

a = [1,2,3,4,5]
b = ['a','b','c','d','e']

print(*zip(a,b))
# (1, 'a') (2, 'b') (3, 'c') (4, 'd') (5, 'e')