[Python] iter(), next(), enumerate()
2022. 2. 3. 22:17ㆍLanguages/Python
iterable
- 반복 가능한 타입의 객체를 의미한다.
- List, Tuple, Dictionary, Set, String, Bytes, Range 등의 순회가 가능하다.
- Iterable 객체를 판별하기 위해선, collections.Iterable에 속한 객체(Instance)인지 확인하면 된다.
- isinstance() 함수를 통해 확인이 가능하다.
import collections
list = [1, 3, 5, 7, 9]
print(isinstance(list, collections.Iterable)) # True
A = 300 # int
print(isinstace(A, collections.Iterable)) # False
iterable한 타입은 단순히 for 문으로도 순회가 가능하다.
list = [1, 3, 5, 7, 9]
for i in list:
print(i) # 1 3 5 7 9
iter(), next()
- iter() 함수는 객체의 iterator를 리턴해준다.
- iter() 함수는 반복을 끝낼 값(sentinel)을 지정할 수 있다.
- next() 함수는 iterator에서 값을 차례대로 가져온다.
- 기본값을 지정해놓지 않으면, iterator의 값을 다 가져온 후에 호출 시 "StopIteration"을 발생시킨다.
list = [1, 2, 3]
it = iter(list)
for i in range(len(list) + 1): # 마지막 반복문에서 StopIteration 발생
print(next(it))
iter() 함수에 호출 가능한 객체(callable)와 반복을 끝낼 값(sentinel)을 넣어서 별다른 조건문(if)없이 반복을 중지할 수 있다.
import random
for i in iter(lambda : random.randint(0, 10), 5): # 숫자 5가 나올 시 중지
print(i, end = ' ')
next() 함수에 기본값을 지정해놓으면, 반복이 끝나더라도 StopIteration이 발생하지 않고 기본값을 리턴한다.
list = [1, 2, 3]
it = iter(list)
for i in range(len(list) + 1):
print(next(it, 100))
enumerate
- 몇 번째 반복문인지 확인할 때 사용
- 튜플(Tuple) 형태로 (인덱스 번호, 원소)를 리턴한다.
Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', \
'August', 'September', 'October', ' November', 'December']
i = 0
for item in enumerate(Months):
print("{0}".format(item), end = ' ')
i += 1
if i % 4 == 0:
print()
print()
enumerate( ... , 1)처럼 두 번째 매개변수를 통해 시작 인덱스 번호를 지정할 수 있다.
for item in enumerate(Months, 1): # 시작 인덱스 번호가 1부터 시작
...
튜플(Tuple)을 리턴한다는 특성을 이용하여, 다음과 같이 활용할 수도 있다.
for index, value in enumerate(Months):
print("index : {}, value : {}".format(index, value))
참고
728x90
반응형
'Languages > Python' 카테고리의 다른 글
[Python] ord()와 chr() 함수 (0) | 2022.04.10 |
---|---|
[Python] 문자열 출력 방식 (0) | 2022.03.17 |
[Python] 한 번에 여러 정수 데이터를 입력 받는 방법 (0) | 2022.02.03 |
[Python] all()과 any() (0) | 2022.02.03 |
[Python] 리스트(list) 연산 - insert(), pop(), remove(), reverse(), sort(), index(), count() (0) | 2022.02.03 |