05의 개발 계발

[TIL] 230324 [python] iterable & iterator & itertools 의 관계 본문

TIL

[TIL] 230324 [python] iterable & iterator & itertools 의 관계

생각하는 코댕이 2023. 3. 24. 13:48
728x90

TIL 학습목표

  • iterable & iterator & itertools 의 의미를 안다.
  • iterable & iterator & itertools 를 구분 할 수 있다.
  • iterable & iterator & itertools 의 용도를 안다.

1) 문제점 (Problem)

itertools 에 대해 새로이 배우며, iterable & iterator 와의 관계성에 궁금증이 생겼다.
데이터를 반복하는 일은 개발과정에서 상당히 많은 부분을 차지하므로, 이들의 개념과 용도를 정리해 두도록 하자.


2) 시도해본 것들 (Try)

학습을 진행한 것이므로 배운 내용을 정리하도록 하자.

▶iterable

python docs의 iterable정의

iterable // 한 번에 하나씩 반환할 수 있는 반복가능한 객체 = 연속성 있거나(시퀀스), 1:1 값이 있는(dict) 객체
               ex) sequence (list str tuple) + non-sequence (dict, file objects) + iter 또는 getitem로 정의 된 method  등
◇용도 // all, any로 판별 + for 반복문, zip() map() 등


▶iterator

python docs의 iterator정의

◇iterator // 값을 차례대로 꺼낼 수 있는 객체 = 내장함수iter()을 사용해 iterable객체를 iterator 객체로 만들 수 있다. 스스로 값을 가지고 있지는 않고, 데이터를 보관하고 있는 주소를 담고 있다.
◇용도 // next()를 통해 값을 하나씩 꺼낼 수 있다.

* iterable한 객체들을 iterator로 변환하고, next()를 통해 하나씩 꺼내는 것을 for 반복문이 한번에 해주는 것이다.



▶iteratools

python docs의 itertools 정의

◇itertools // 하나의 모듈로, 반복 가능한 데이터 스트림을 처리하는 데 유용한 함수와 제네레이터를 포함한다.
◇용도 //  count() islice() chain() 등 

정의만으론 이해도가 부족하다. 실사용 사례가 나올 경우 추가 첨부 하도록하자.


3) 해결 (Solution)

python docs와 wikidocs의 도서 참고, 내가 이해한 정의

  • iterable // 반복 가능한 데이터 (list, dict, set, str, bytes, tuple, range)
  • iterator // 반복 가능한 데이터의 값을 차례대로 하나씩 꺼낼 수 있는 객체 (next()로 출력)
  • itertools // 반복 가능한 데이터(=iterable) 스트림을 처리하는 모듈 (함수와 제네레이터로 구성)

*참고로 python docs의 자체언어번역은 그나마 신뢰할 만하나, 가능한 영문을 봐야 오해의 소지 없이 정의를 이해 할 수 있다. 크롬의 자체 번역을 사용시 의도치 않은 오역으로 인해 잘못된 지식을 습득할 수 있으니 주의!


4) 알게 된 점  (Learnd)

iterable & iterator & itertools 의 의미와 용도를 알게 되었다.
아직 실사용 부분에서는 어려움이 있지만, 반복문은 매우 자주 사용되는 구문이고 itertools를 활용할 수 있어야 효율적으로 반복문을 사용 가능하다.
실제 코드에 적용을 해보도록 하자.

728x90