파이썬 itertools 공식문서 ▾
파이썬 Itertools 라이브러리(or 모듈)에는 많은 함수들이 있다.
그 중에서도 조합/순열 함수인 아래 4가지 함수에 대해서 알아보자.
combinations()
combinations_with_replacement()
product()
permutations()
1. combinations(iterable, r)
→ iterable에서 원소 개수가 r개인 조합 뽑기
from itertools import combinations
if __name__ == '__main__':
iterator = [1, 2, 3, 4]
for i in combinations(iterator, 3):
print(i)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)
2. combinations_with_replacement(iterable, r)
→ iterable에서 원소 개수가 r개인 중복 조합 뽑기
from itertools import combinations_with_replacement
if __name__ == '__main__'
iterator = [1, 2, 3, 4]
for i in combinations_with_replacement(iterator, 2):
print(i)
(1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 2)
(2, 3)
(2, 4)
(3, 3)
(3, 4)
(4, 4)
3. permutations(iterable, r)
→ iterable에서 원소 개수가 r개인 순열 뽑기
from itertools import permutations
if __name__ == '__main__':
iterator = [1, 2, 3, 4]
for in permutations(iterator, 2):
print(i)
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)
import itertools
arr = ['A', 'B', 'C']
nCr = itertools.combinations(arr, 2)
print(list(nCr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'C')]
4. product(*iterables, repeat=1)
→ 여러 iterable의 데카르트곱 반환
from itertools import product
if __name__ == '__main__'
iterator1 == ['A', 'B', 'C']
iterator2 == ['1', '2', '3']
for i in product(iterator1, iterator2, repeat=1):
print(i)
('A', '1')
('A', '2')
('A', '3')
('B', '1')
('B', '2')
('B', '3')
('C', '1')
('C', '2')
('C', '3')
from itertools import product
if __name__ == '__main__'
iterator1 == ['A', 'B', 'C']
iterator2 == ['1', '2', '3']
for i in product(iterator1, iterator2, repeat=2):
print(i)
('A', '1', 'A', '1')
('A', '1', 'A', '2')
('A', '1', 'A', '3')
('A', '1', 'B', '1')
('A', '1', 'B', '2')
('A', '1', 'B', '3')
('A', '1', 'C', '1')
('A', '1', 'C', '2')
('A', '1', 'C', '3')
('A', '2', 'A', '1')
...
'알고리즘 문제' 카테고리의 다른 글
[Python]1912번.연속합(DP) (0) | 2024.01.05 |
---|---|
[Python]1182번.부분수열의 합(브루트포스,백트레킹) (1) | 2024.01.04 |
[Python]10819번.차이를 최대로(브루트포스,백트레킹) (1) | 2024.01.03 |
[Python]2961번.도영이가 만든 맛있는 음식(브루트포스,백트레킹) (0) | 2024.01.02 |
[Python]2668번.숫자고르기(그래프, BFS) (0) | 2023.12.28 |