Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코딩테스트
- Reverse Shuffle Merge
- Find the nearest clone
- Recursion: Davis' Staircase
- Algorithm
- 프로그래머스
- Roads and Libraries
- 구슬탈출2
- DFS: Connected Cell in a Grid
- 야근지수
- 격파르타 후기
- BFS: Shortest Reach in a Graph
- 피보나치 함수
- Special String Again
- 매칭점수
- 알고리즘
- programmers
- [sqld]자격증합격
- 머신러닝
- Interview Preparation Kit
- candies
- 백준
- 해커랭크
- 파이썬
- python
- hackerrank
- Common Child
- 격파르타 합격후기
- 격파르타 장점
- Max Array Sum
Archives
- Today
- Total
Archive
[파이썬 기초] iterator, generator 본문
1. iterator
- 값을 한 개씩 순서대로 꺼낼 수 있는 구조를 갖춘 오브젝트이다.
- 예를 들어 range()는 iterator를 생성하는 함수이고, list는 iterator를 생성할 수 있는 데이터 형이다.
- list에서 iterator를 꺼내려면 iter()함수를 사용한다.
1 2 3 4 5 6 7 8 | nums = [1, 2, 3] i = iter(nums) next(i) #1 next(i) #2 next(i) #3 | cs |
2. generator
- 함수 형태이지만 리턴값으로 yield문을 사용한다.( 일반 함수는 리턴값을 return으로 반환한다.)
- yield문을 사용하면 함수 내부의 상태를 모두 저장하고, 다시 호출되면 yield로 값을 반환한 뒤 코드부터 다시 처리한다.
1 2 3 4 5 6 7 8 9 10 11 | def gen1to3(): yield 1; yield 2; yield 3; it = gen1to3(); for i in it: print(i) # 1 # 2 # 3 | cs |
3. 홀수를 반환하는 iterator 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 30 이하의 홀수를 반환하는 이터레이터 def genOdd(): i = 1 while i <= 30: yield i i += 2 # iterator 얻기 it = genOdd() for v in it: print(v, end=",") # 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29, | cs |
4. 소수를 반환하는 iterator 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def genPrime(maxnum): num = 2 while (num <= maxnum): is_prime = True for i in range(2, num): if (num % i)==0: is_prime = False break if (is_prime): yield num num+=1 # iterator 얻기 it = genPrime(50) for i in it: print(i, end=",") # 2,3,5,7,11,13,17,19,23,27,29,31,37,41,43,47, | cs |
'공부 > Python' 카테고리의 다른 글
[파이썬 기초] 파일 처리 (0) | 2017.10.02 |
---|---|
[파이썬 기초] 모듈 (0) | 2017.10.02 |
[파이썬 기초] 익명함수 (0) | 2017.10.02 |
[파이썬 기초] 함수 - 가변 개수 인수 (0) | 2017.10.02 |
[파이썬 기초] 문자열 자르고 붙이기 (0) | 2017.10.02 |
Comments