프로그래밍 언어/파이썬
파이썬 내장 함수 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')