728x90
itertools란 효율적인 루핑을 위한 이터레이터를 만드는 라이브러리로 여러가지 함수들이 많이 있지만, 그 중 combinations(), combinations_with_replacement(), product(), permutations()에 대해 알아보자.
- combinations(iterable, r)
combinations는 iterable에서 원소의 개수가 r개인 조합을 뽑는 함수이다. 아래와 같이 사용할 수 있다.
from itertools import combinations
n_list = [1, 2, 3]
print(combinations(n_list, 2))
'''
[(1, 2), (1, 3), (2, 3)]
'''
- combinations_with_replacement(iterable, r)
combinations_with_replacement는 iterable에서 원소의 개수가 r개인 중복 조합을 뽑는 함수이다.
from itertools import combinations_with_replacement
n_list = [1, 2, 3]
print(combinations_with_replacement(n_list, 2))
'''
[(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]
'''
- permutations(iterable, r=None)
permutations는 iterable에서 원소의 개수가 r개인 순열을 뽑는 함수이다.
만약 r을 지정하지 않거나 None으로 지정하면 최대 길이의 순열이 리턴된다.
from itertools import permutations
s_list = ['A', 'B', 'C']
print(list(permutations(s_list)))
'''
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'),
('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
'''
- product(*iterables, repeat=1)
여러 iterable의 데카르트곱을 리턴하는 함수로, product는 다른 함수들과 달리 여러 iterable을 넣어줄 수 있고 iterable간의 모든 짝을 지어 리턴한다. repeat은 반복횟수인데, repeat의 사용법은 코드를 보며 알아보자.
from itertools import product
s_list = ['A', 'B']
n_list = [1, 2]
print(list(product(s_list, n_list, repeat=1)))
'''
[('A', 1), ('A', 2), ('B', 1), ('B', 2)]
'''
# repeat=3의 의미는 product(s_list, s_list, s_list, repeat=1)과 같다.
print(list(product(s_list, repeat=3)))
'''
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'B', 'A'),
('A', 'B', 'B'), ('B', 'A', 'A'), ('B', 'A', 'B'),
('B', 'B', 'A'), ('B', 'B', 'B')]
'''
728x90
'🐍Python | Django' 카테고리의 다른 글
[Python] heapq (0) | 2022.06.03 |
---|---|
[Python] zip() (0) | 2022.05.30 |
[Python] enumerate() (0) | 2022.05.25 |
[Python] Exception 추적 (0) | 2022.05.23 |
[Python] Duck Typing? (0) | 2022.05.22 |