itertools
itertools는 효율적인 루핑을 위한 이터레이터를 만드는 함수다.
iterate는 순환하다, 반복하다라는 뜻인데 특정 패턴이 무한하게 반복되는 배열을 만들거나
배열의 값을 일괄적으로 계산하는 등의 작업을 할 수 있게 도와주는 모듈이다.
오늘 사용한 것들은 product, permutations, combinations, combinations_with_replacement 이렇게 4개가 있다.
ex)product
from itertools import product
sample1 = ["A", "B", "C", "D", "E"]
sample2 = [1, 2, 3, 4]
# 행 / 열을 구분하여 프린트 하기 위해 enumerate 사용
for i, v in enumerate(product(sample1, sample2), 1):
print(v, end=" ")
if i % len(sample2) == 0:
print("")
product(*iterable)는 데카르트 곱을 구해준다.
데카르트 곱 => A집합의 x이면서 B집합에서는 y인 순서쌍들의 집합으로 A X B 의 결과값들을 출력해준다.
ex) permutations
from itertools import permutations
sample = ["A", "B", "C"]
# 원소의 개수가 3개인 순열 출력
for i in permutations(sample, 3):
print(i)
permutations(iterable,n)는 원소의 개수가 n개인 순열을 출력해준다.
ex) combinations
from itertools import combinations
sample = ["A", "B", "C"]
# 원소의 개수가 2개인 조합 출력
for i in combinations(sample, 2):
print(i)
combinations(iterable,n)는 원소의 개수가 n개인 조합을 구해준다.
ex) combinations_with_replacement
from itertools import combinations_with_replacement
sample = ["A", "B", "C"]
# 중복을 포함한 원소의 개수가 3개인 조합 출력
for i in combinations_with_replacement(sample, 3):
print(i)
combinations_with_replacement(iterable,n)는 원소의 개수가 n개인 조합을 구하는데
combinations와 다르게 중복을 허용한다.
예제 코드를 직접 쳐보면서 itertools에 대해서 공부했는데,
지금은 익숙하지 않지만 나중에 알고리즘 문제를 풀 때 도움이 된다고 한다.
내용이 어려워서 정리했는데 itertools에는 다른 기능들도 많다.
실제 사용되는 예제를 보면서 사용해보고 싶지만 아직은 나중에 이야기라서 빨리 많은 문제를 풀어야겠다.
'Python' 카테고리의 다른 글
[Python] map, lambda (0) | 2024.07.08 |
---|---|
[Python] Class에 대한 이해 (0) | 2024.07.05 |
[Python] 가위바위보 게임 제작 및 Enum(열거형) 클래스 (0) | 2024.07.01 |
[Python] 파이썬 Up-Down게임 만들기 (0) | 2024.06.28 |
[Python] 기본 문법 공부 및 문제 풀이 (0) | 2024.06.24 |