반응형
※ 공부한 내용을 정리한 것이기 때문에 틀릴수도 있습니다!
파이썬 공부하다 너무너무 헷갈리는 개념 이터러블, 이터레이터, 제너레이터를 나름대로 정리해봄 ㅠㅠ
Iterable
- 반복문(for문, while문)을 통해 순환이 가능한 객체
- str, list, tuple, dictionary, range, set 등
1
2
3
4
5
6
7
8
9
10
|
for i in "안녕하세요":
print(i)
----------
(result)
안
녕
하
세
요
|
cs |
위의 파이썬 코드에서 "안녕하세요"는 Iterable 이다.
요소 '안'은 iterator 이다. 즉, 이터레이터는 이터러블의 요소 하나하나를 말한다!
Iterator
- next()메소드로 데이터를 순차적으로 호출 가능한 객체
- 마지막 데이터까지 불러 오면 다음은 StopIteration exception 발생
- iterable한 객체를 iterator 로 변환하고 싶다면, iter() 라는 built-in function 을 사용
- for 문으로 looping 하는 동안, python 내부에서는 임시로 list를 iterator로 자동 변환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
numbers = [1,2,3,4,5,6]
r_num = reversed(numbers)
print("reversed_numbers: ", r_num) # 메모리 주소값 출력
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
---------------------------
(result)
reversed_numbers: <list_reverseiterator object at 0x0000010DF19E44C0>
6
5
4
3
2
1
|
cs |
1
2
3
4
5
6
7
|
list_a = [1,2,3,4,5] # 이터러블
print(reversed(list_a)) # 메모리 주소값 반환
print(list(reversed(list_a))) # list로 이터러블로 만들어줘야함
------------
(result)
<list_reverseiterator object at 0x000001AE5E237850>
[5, 4, 3, 2, 1]
|
cs |
* 조합해줘야하는 함수로는 reversed(), enumerate(), items() / map(), filter() 가 있음
Generators
- 이터러블 객체가 객체를 만들어, 이터레이터를 만드는 방법이라면, 제너레이터(Generators)는 함수를 통해 이터레이터를 만드는 방법이다.
반응형
'Language > Python' 카테고리의 다른 글
Python 강의 정리 4. 반복문(for문,while문), 딕셔너리 (0) | 2021.05.02 |
---|---|
Python 강의 정리 3. 리스트 (0) | 2021.05.02 |
Python 강의 정리 2. continue, pass, break 차이점 (0) | 2021.05.02 |
Python 강의 정리 1. 입출력, 조건문(if문) (0) | 2021.05.02 |
2020년도 2회차 정처기 실기 파이썬문제 - set(집합) (0) | 2021.05.02 |