FE PARADISE

[Python] itertools 본문

백엔드/Python

[Python] itertools

PARADISE247 2026. 9. 24. 18:23
반응형

itertools.zip_longest

itertools.zip_longest(*iterables, fillvalue=None)

파이썬 내장함수인 zip과 똑같이 동작하나 전달 받은 반복 가능한 객체의 길이가 서로 다를 경우 긴 객체의 길이에 맞춰서 fillvalue에 설정한 값으로 채운다. 

import itertools

members = ['동화', '계훈', '이주', '동현', '민제', '주왕']
snacks = ['사탕', '초콜릿', '젤리', '치즈볼']

result = itertools.zip_longest(members, snacks, fillvalue='메가도스')
print(list(result))

다음과 같은 결과가 나온다.

[('동화', '사탕'), ('계훈', '초콜릿'), ('이주', '젤리'), ('동현', '치즈볼'), ('민제', '메가도스'), ('주왕', '메가도스')]

간식의 개수가 멤버의 수보다 적으므로 fillvalue로 설정한 '메가도스'가 부족한 항목을 대신하여 채워진다.


itertools.permutations

반복 가능한 객체 중 r개를 선택한 순열을 이터레이터로 반환한다. 

itertools.permutations(iterable, r)
# permutations(range(3), 2) --> (0,1), (0,2), (1,0), (1,2), (2,0), (2,1)

다음과 같은 예시 코드로 ['1', '2', '3'] 중 숫자 2개를 선택한 순열을 구할 수 있다. 

import itertools

result = list(itertools.permutations(['1', '2', '3'], 2))
print(result)

itertools.combinations

반복 가능한 객체 중 r개를 선택한 조합을 반환한다. 

itertools.combinations(iterable, r)

로또 번호 1~45 중 서로 다른 숫자 6개를 뽑는 모든 경우의 수의 개수를 구하는 코드는 다음과 같다. 

import itertools

it = itertools.combinations(range(1, 46), 6)

print(len(list(it))) # 8145060
반응형

'백엔드 > Python' 카테고리의 다른 글

[Django] admin site  (0) 2026.05.12
[Django] decorator  (0) 2026.02.17
[Django] reverse  (0) 2026.02.08
isinstance  (0) 2026.01.25