iterable & iterator
- iterable 객체: 반복 가능한 객체(list,dict,set,tuple,str,range...)
- iterator 객체: 값을 차례대로 꺼낼 수 있는 객체
- 다 꺼내면 사라진다.
- 꺼낼때 데이터를 메모리에 생성해주는 방식
- iter 함수
- iterable 객체를 iterator 객체로 변환한다.

- for 문은 iterable , iterator 객체를 모두 반복해준다.
iterator은 반복이 안된다 ! 한 번 데이터를 다 꺼냈으면 사라진다.
- next 함수
- iterator 객체를 순서대로 하나씩 꺼내주는 함수.
next 함수의 역활은 iterator 객체를 순서대로 하나씩 꺼내주는 함수하 했다 .
위 사진을 보면 next함수를 써서 1,2,3dl 순서대로 하나씩 출력이 된걸 알 수가 있다 .
근데 만약에 next함수를 안쓰면 어떻게 될까 ??
이런식으로 프린트 함수를 써도 객체 주소가 나온다 .
Generator란?
- iterator를 생성해주는 표현식
- iterator와 같은 동작을 하는 객체
소괄호를 이용한 제너레이터 객체 만들기
위 사진은 제너레이터 예시 사진이다.
0,1,2 값을 출력하는 문제 인데 제너레이터를 써서 값을 출력했다 .
제너레이터도 한 번 나온 값은 반복되서 값이 출력이 안되고 없어진다!
함수를 이용한 제너레이터 객체 만들기
- yield 문을 이용하면 된다.
위 사진은 제너레이터를 함수로 만든 예제이다.
함수 안에 yield을 써주면 yield앞에서 바로 멈추고 실행이 안된다 .
위 사진을 보면 쉽게 알수있다 .
제너네이터 함수를 만들어 주기 위해 yield를 써주고
포문을 이용해서 값을 출력을 해준다 .
yield을 쓰면 값이 출력이 안되고 가지고 있기 때문에
무조건 for문을 이용해 다른 변수로 바꿔서 출력을 해주던지
아니면 next 함수를 이용해 값을 출력을 할수있다.
제너레이터 함수 실습 예시를 가지고 왔다 .
lst 안에 있는 none값을 빼고 출력하라는 문제 !
처음엔 일반 함수처럼 식을 써준다
for 문을 이용해 아이탬이라는 변수를 지정해주고 값을 받을수 있도록 한다
여기서 조건문을 이용해 none이 아니면 아이탬 변수에 넣어라 라는 조건을 건다.
여기서 마지막에 yield를 집어서 제너레이터라는걸 만들어준다
그 다음 값을 출력하기 위한 코드를 만들어야한다.
함수식이 기니까 gen이라는 변수에 함수식을 담아 간결하게 만들어주고
for문을 이용해 값을 하나씩 꺼내준다.
'파이썬' 카테고리의 다른 글
20. 정규식 (2) 메타문자 (0) | 2022.08.09 |
---|---|
19. 정규표현식(정규식) (0) | 2022.08.09 |
17. 예외처리 (0) | 2022.08.08 |
16. 실습 예제 (0) | 2022.08.05 |
15.클래스 (0) | 2022.08.03 |