Language/Python

[Python] Iterable, Iterator, Generators 정리

Jen'_' 2021. 5. 2. 21:28
반응형

 

※ 공부한 내용을 정리한 것이기 때문에 틀릴수도 있습니다!

파이썬 공부하다 너무너무 헷갈리는 개념 이터러블, 이터레이터, 제너레이터를 나름대로 정리해봄 ㅠㅠ

 

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>
[54321]
cs

 

* 조합해줘야하는 함수로는 reversed(), enumerate(), items() / map(), filter() 가 있음

 

 

Generators

  • 이터러블 객체가 객체를 만들어, 이터레이터를 만드는 방법이라면, 제너레이터(Generators)는 함수를 통해 이터레이터를 만드는 방법이다.

 

 

 

 

 

 

 

 

반응형