티스토리 뷰
[edu] container , iterable, iterator, generator (컨테이너, 이터레이블, 이터레이터, 제네레이터)
burningrizen 2019. 1. 24. 21:32[container: 컨테이너]
원소들을 가지고 있는 데이터 구조, 멤버십 테스트를 지원한다.
보통, 모든 원소값을 메모리에 가지고 있다.
잘 알려진 컨테이너는 다음과 같다.
list, deque, set, dict, tuple, str,....
컨테이너는 실세계의 컨테이너(박스, 컵보드, 집, 화물 등)처럼 생각하면 다루기 쉽다.
기술적으로, 어떤 객체가 특정한 원소를 포함하고 있는지 아닌지 판단할 수 있으면 컨테이너라고 한다.
대부분의 컨테이너가 자신이 포함하고 있는 모든 원소들을 생성하는 방법(요소의 접근)을 제공하지만
이기능은 컨테이너로 만드는게 아니라 이터레이블로 만든다.
모든 컨테이너가 이터레비을할 필요는 없다.
[멤버십테스트]
assert 1 in [1, 2, 3]
assert not in [1, 2, 3]
[iterable: 이터레이블]
반복 가능한 객체, 순차적 접근가능한 객체로 대부분의 컨테이너는 또한 이터레이블(iterable) 하다.
그러나 더 많은 것들 또한 이터레이블 하다.
예로 파일 열기, 소켓 열기등이 있다.
컨테이너가 일반적으로
이터레이블을 반환할 수 있는 모든 객체가 가능하다,
대표적 iterable 타입 - list, dict, set, str, bytes, tuple, range
[iterator]
값을 차례대로 꺼낼 수 있는 객체
next() 함수로 데이터를 순차적으로 호출 가능한 객체
next() 를 호출할 때 다음 값을 생성해내는 상태를 가진 헬퍼 객체이다.
next() 를 가진 모든 객체는 iterator 이고, 값을 생성해 내는 방법과는 무관하다
즉, iterator 는 값 생성기다, 다음 값을 요청할 때 마다 내부 상태를 유지하고 있고
다음 값을 계산하는 방법을 알고 있다.
마지막 데이터를 불러 올수 없는경우 StopIteration exception 을 발생 시킨다
이것은 무한히 할수 없는 경우이고
무한히 가저오는 itertools.cycle 같은 함수는 next() 를 통해서
무한히 값을 생성할 수 있다.
[generator]
특수한 형태의 iterator 라고 볼수 있다.
모든 제네레이터는 iterator 이다. (역은 성립하지 않는다)
모든 제네레이터는 lazy evalution 하다
'python lecture > basic' 카테고리의 다른 글
[edu] while 예제 모음 (스택, 문자열) (0) | 2019.01.28 |
---|---|
[edu] 벤치마크 (benchmark, time, timeit, decorator, context manager, 시간, 성능) (0) | 2019.01.25 |
[edu] 컬렉션에서 아이템 찾기 (검색 성능) (0) | 2019.01.24 |
[edu] 사용하지 않을 변수 만들기 ( _ ) (0) | 2019.01.24 |
[edu] custom sequence: 커스텀 시퀀스 (__getitem__, __len__, __iter__) (0) | 2019.01.24 |
- Total
- Today
- Yesterday
- 플러스친구 자동응답
- 파이썬 프로그래밍
- admin.py
- 문서 비교
- 장고
- 이미지 비교
- 장고 플러스친구 자동응답
- 파이썬 입문
- pycrypto
- 문과 코딩
- 면접답변
- PuTTYGen
- 장고 카톡 자동응답
- 파이썬 강좌
- 모바일 스킨 적용
- Tistory
- wsgi
- 면접정답
- 파이썬
- gitlab
- chatbot
- virtualenv
- Python
- 파이썬 독학
- 모바일 테마 적용
- django chatbot
- 엑셀 비교
- django
- gitignore
- GIT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |