이터레이터

    특징

  • 반복 가능한 객체(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

+ Recent posts