오늘은 iteration에 도움이 되는 여러가지 메소드가 있는
Python의 itertools 라이브러리를 소개해보겠다.
itertools란
" 효율적인 루핑을 위한 이터레이터를 만두는 함수 "
1. combinations()
list를 n 수 만큼 컴비네이션들을 튜플 형식으로 만들어준다.
from itertools import combinations
l = [1,2,3]
for i in combinations(l,2):
print(i)
# 출력 결과:
# (1, 2)
# (1, 3)
# (2, 3)
# 리스트화해서 인덱싱 콜 하기
combi = list(combinations(l, 2))
print (combi[0])
# 출력 결과:
# (1, 2)
2. combinations_with_replacement()
list를 n수 만큼, 중복을 허용하며 컴비네이션들을 튜플 형식으로 반환해준다.
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')
3. permutations()
list에서 퍼뮤테이션들을 반환해준다!
from itertools import permutations
l = ['A', 'B', 'C']
for i in permutations(l): #n을 지정하지 않거나 n=None으로 하면 최대 길이의 순열이 반환된다
print(i)
# 출력결과:
# ('A', 'B', 'C')
# ('A', 'C', 'B')
# ('B', 'A', 'C')
# ('B', 'C', 'A')
# ('C', 'A', 'B')
# ('C', 'B', 'A')
4. product()
여러 리스트를 사용할 때 쓰는 함수
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') # combinations_with_replacement(l, 3) 과 같다
# ('A', 'A', 'B')
# ('A', 'B', 'A')
# ('A', 'B', 'B')
# ('B', 'A', 'A')
# ('B', 'A', 'B')
# ('B', 'B', 'A')
# ('B', 'B', 'B')
'오늘 나는 (TIL)' 카테고리의 다른 글
[TIL 240812] 머신러닝과 딥러닝의 간략한 차이 (5) | 2024.08.13 |
---|---|
[TIL 240809] 데이터 해석 시 흔히 하는 실수들 (0) | 2024.08.08 |
[TIL 240807] Python의 정규 표현식 Regular Expression (0) | 2024.08.06 |
[TIL 240806] Python의 Collections 라이브러리 (0) | 2024.08.05 |
[TIL 240805] CRM과 RFM 고객 세분화 분석 (0) | 2024.08.05 |