Python 심화 학습6(itertools)

CheolSoonKang·2024년 2월 27일

개념정리

목록 보기
16/18

itertools란?

효율적인 루핑을 위한 이터레이터를 만드는 함수
특정 패턴이 반복되는 배열을 만들거나 값을 일괄적으로 계산하는 등의 작업 가능
이번 포스트에서는 조합형 이터레이터에 대해서 다룰 예정

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("")
# result output
"""
('A', 1) ('A', 2) ('A', 3) ('A', 4) 
('B', 1) ('B', 2) ('B', 3) ('B', 4) 
('C', 1) ('C', 2) ('C', 3) ('C', 4) 
('D', 1) ('D', 2) ('D', 3) ('D', 4) 
('E', 1) ('E', 2) ('E', 3) ('E', 4) 
"""

순열과 조합

  • 순열 : 서로 다른 n개의 원소를 가지는 어떤 집합에서 중복 없이 순서에 상관있게 r개의 원소를 선택하거나 혹은 나열하는 것

  • 조합 : 서로 다른 n개의 원소를 가지는 어떤 집합에서 중복 없이 순서에 상관없게 r개의 원소를 선택하는 것

원소의 개수가 n개인 순열

sample = ["A", "B", "C"]
# 원소의 개수가 3개인 순열 출력
for i in permutations(sample, 3):
    print(i)
# result output
"""
('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')
"""

원소의 개수가 n개인 조합 구하기

sample = ["A", "B", "C"]
# 원소의 개수가 2개인 조합 출력
for i in combinations(sample, 2):
    print(i)
# result output
"""
('A', 'B')
('A', 'C')
('B', 'C')
"""

원소의 개수가 n개인 조합 구하기(중복 허용)

sample = ["A", "B", "C"]
# 중복을 포함한 원소의 개수가 3개인 조합 출력
for i in combinations_with_replacement(sample, 3):
    print(i)
# result output
"""
('A', 'A', 'A')
('A', 'A', 'B')
('A', 'A', 'C')
('A', 'B', 'B')
('A', 'B', 'C')
('A', 'C', 'C')
('B', 'B', 'B')
('B', 'B', 'C')
('B', 'C', 'C')
('C', 'C', 'C')
"""
profile
소통하며 성장하는 늦깎이 개발자

0개의 댓글