이터레이터
특징
- 반복 가능한 객체(iterable)를 반복시키는 객체를 말한다.
- next( ) 함수 호출 시 순서대로 다음 값을 리턴할 수 있는 객체이다.
- iterable 객체의 길이를 초과하여 next( ) 함수로 이터레이터를 호출할 경우 StopIteration 예외가 발생한다.
- 주로 무한하게 반복되는 배열이나 배열의 값을 일괄적으로 계산하는 작업등에 쓰인다.
이터레이터를 만드는 방법
1. __iter__ 메소드와 __next__메소드로 직접 구현
2. iter, next 함수
3. Itertools
4. 제너레이터
Itertools
효율적인 반복(루핑)을 위한 이터레이터를 만드는 함수이다.
1.데카르트의 곱 : 두 집합의 원소를 골라 순서쌍으로 만든다.
from itertools import product
list1 = ["ㄱ", "ㄴ"]
list2 = ["ㅏ", "ㅑ"]
#list1의 요소와 list2의 요소가 쌍으로 묶임. repeat=3은 쌍이 3개
for i in product(list1, list2, repeat=3):
print(i)
# 출력값 : ('ㄱ', 'ㅏ', 'ㄱ', 'ㅏ', 'ㄱ', 'ㅏ')
2.순열 구하기 : 요소들의 중복없이 원소가 n개인 경우의 수를 만든다.
from itertools import permutations
list = ["ㄱ", "ㄴ", "ㄷ", "ㄹ", "ㅏ", "ㅑ", "ㅓ", "ㅕ", "ㅗ"]
# r(원소)가 3개인 경우의 수. r=None이거나 지정하지 않으면 최대 길이 순열로 리턴
for i in permutations(list, 3):
print(i)
#출력값 : ('ㄱ', 'ㄴ', 'ㄷ')
3.조합 구하기 : 요소들의 중복없이 원소가 n개인 순서가 정렬된 경우의 수를 만든다.
from itertools import combinations
list = ["ㄱ", "ㄴ", "ㄷ", "ㄹ", "ㅏ", "ㅑ", "ㅓ", "ㅕ", "ㅗ"]
for i in combinations(list, 3):
print(i)
# 순열 구하기와 무슨 차이인지 모르겠음
#출력값 : ('ㄱ', 'ㄴ', 'ㄷ')
4.(중복 포함) 조합 구하기 :요소들의 순서가 정렬된 경우의 수를 만든다.
from itertools import combinations_with_replacement
list = ["ㄱ", "ㄴ", "ㄷ", "ㄹ", "ㅏ", "ㅑ", "ㅓ", "ㅕ", "ㅗ"]
# list1의 요소와 list2의 요소가 쌍으로 묶임. repeat=3은 쌍이 3개
for i in combinations_with_replacement(list, 3):
print(i)
#출력 : ('ㄱ', 'ㄱ', 'ㄱ')
https://winterakoon.tistory.com/65
제너레이터(generator)
제너레이터란? 지연 평가 구현체(lazy evaluation) 즉, 값이 필요할 때 계산해주는 객체이다. 파이썬의 모든 지연 평가 구현체(lazy evaluation)는 이터레이터라고 한다. 이터레이터를 만드는 도구이다.
winterakoon.tistory.com
'Python' 카테고리의 다른 글
[Python] 파일과 디렉토리 다루기 (0) | 2023.03.22 |
---|---|
[Python] 제너레이터(generator) (0) | 2023.03.22 |
[Python] 컴프리헨션(Comprehension) (0) | 2023.03.22 |
[Python] 패킹과 언패킹 (1) | 2023.03.22 |
[Python] lambda식 (0) | 2023.03.21 |