728x90
itertools 란 효율적인 루핑을 위한 이터레이터를 만드는 함수이다.
itertools에는 아래와 같은 조합형 이터레이터가 있다.
- combinations()
- combinations_with_replacement()
- product()
- permutations()
combinations(iterable, r) : iterable에서 원소 개수가 r개인 조합 뽑기
from itertools import combinations
l = [1,2,3]
for i in combinations(l,2):
print(i)
'''
출력 결과:
(1, 2)
(1, 3)
(2, 3)
'''
combinations_with_replacement(iterable,r) : iterable에서 원소 개수가 r개인 중복 조합 뽑기
from itertools import combinations_with_replacement
l = ['A', 'B', 'C']
for i in combinations_with_replacement(l,2):
print(i)
'''
출력결과:
('A', 'A')
('A', 'B')
('A', 'C')
('B', 'B')
('B', 'C')
('C', 'C')
'''
permutations(iterable,r=None) : iterable에서 원소 개수가 r개인 순열 뽑기
from itertools import permutations
l = ['A', 'B', 'C']
for i in permutations(l):
print(i)
'''
출력결과:
('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')
'''
for i in permutations() 구문에서 r을 지정하지 않거나 r=None으로 하면 만들 수 있는 최대 길이의 순열이 리턴된다.
product(*iterables, repeat=1) : 여러 iterable의 데카르트곱 리턴
from itertools import product
l1 = ['A', 'B']
l2 = ['1', '2']
for i in product(l1,l2,repeat=1): #l1과 l2의 모든 쌍을 지어 리턴한다
print(i)
'''
출력결과:
('A', '1')
('A', '2')
('B', '1')
('B', '2')
'''
for i in product(l1,repeat=3): #product(l1,l1,l1,repeat=1)과 동일한 출력
print(i)
'''
출력결과:
('A', 'A', 'A')
('A', 'A', 'B')
('A', 'B', 'A')
('A', 'B', 'B')
('B', 'A', 'A')
('B', 'A', 'B')
('B', 'B', 'A')
('B', 'B', 'B')
'''
reference
https://yganalyst.github.io/etc/memo_18_itertools/
728x90
'python > 라이브러리' 카테고리의 다른 글
[Python] Haversine - 두 지점의 위도 경도로 직선 거리 구하기 (0) | 2022.10.11 |
---|---|
[Python] tqdm 라이브러리 - 작업 진행률 표시 (0) | 2022.07.27 |
[기초] Altair / 데이터 시각화 (0) | 2022.07.01 |
[기초] Seaborn 라이브러리 정리 / Python 파이썬 (0) | 2022.05.16 |
[기초] Pandas 라이브러리 정리 (1) / Python 파이썬 (0) | 2022.05.16 |