반응형
itertools는 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리입니다.
그 중 자주 사용되는 4가지 클래스에 대해 알아보겠습니다.
알아보기 전 공통으로 알아둘 것이 있습니다.
- itertools는 파이썬 외장 라이브러리 이므로 import 선언을 해주어야합니다. 만약 combinations 클래스가 필요하다면 from itertools import combinations 로 선언해주시면 됩니다.
- 항상 list() 를 해주어 리스트 객체로 받아야 합니다.
- combinations 처럼 뒤에 s 가 붙어있는지 확인해주어야합니다. product 경우는 s가 없습니다.
함수 | 설명 | 사용법 |
permutations | iterable 객체에서 r개의 데이터를 뽑아 순서대로 나열합니다. | permutations(리스트, r개) |
combinations | iterable 객체에서 r개의 데이터를 뽑아 순서는 고려하지 않고 나열합니다. | combinations(리스트, r개) |
product | iterable 객체에서 r개의 데이터를 뽑아 순서대로 나열하고 중복을 허용합니다. | product(리스트, repeat =3개) |
combinations_with_replacement | iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 중복을 허용한 채 나열합니다. | combinations_with_replacement(리스트, r개) |
from itertools import permutations
from itertools import combinations
from itertools import product
from itertools import combinations_with_replacement
data = ['A', 'B', 'C']
print(list(permutations(data, 3)))# 3개 뽑아 순서 고려 && 만약 data 수보다 두번째 인자가 더 크면 빈 리스트 반환
#[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
print(list(combinations(data, 2)))# 2개 뽑아 순서 고려 안함
#[('A', 'B'), ('A', 'C'), ('B', 'C')]
print(list(product(data, repeat=3)))# 3개 뽑아 순서 고려하고 중복 허용
#데이터가 많아서 직접해보시기 바랍니다.
print(list(combinations_with_replacement(data, 3)))# 3개 뽑아 순서 고려안하고 중복 허용
#[('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')]
반응형
'...' 카테고리의 다른 글
[Python] sort()에서의 key lambda 사용하기 (0) | 2021.02.22 |
---|---|
[Python] collections 라이브러리 deque, Counter (0) | 2021.02.21 |
[Python] 파이썬 2차원 리스트 초기화 (0) | 2021.02.17 |
[Python] 리스트 특정값 모두 제거하기 (0) | 2021.02.17 |
[Python] 문자열 함수 총 정리 (0) | 2021.02.14 |