itertools.permutations

김키핑·2026년 2월 10일
post-thumbnail

🐏 배경지식

🐑 iterator // 순회자

iterator란 next() 메서드를 통해 값을 하나씩 순차적으로 꺼낼 수 있는 객체이다.

예제)


from collections import Counter 

def solution(participant, completion):
    p_count = Counter(participant)
    c_count = Counter(completion)
    answer = p_count - c_count
    
    # 딕셔너리에 남아 있는 유일한 키(완주 못한 선수 이름) 반환
    return next(iter(answer))

모든 iterator는 iterable이지만,
모든 iterable이 iterator는 아니다.

따라서 set, dictionary 등 인덱싱이 되지 않는 iterable 객체는
iter()로 iterator를 생성한 뒤
next()를 사용하여 첫 요소를 순차적으로 꺼낼 수 있다.

🐑 itertools

특정 규칙에 따라 값을 생성하는 이터레이터를 구현해 둔 것을 itertools 이라고 한다.
이 라이브러리는 특정 규칙에 따라 값이 나열된 조합, 순열을 쉽게 구할 수 있다.


🐏 itertools.permutations()

r 길이의 순열을 중복없이 출력하는 함수

※ 순열 : 어떤 집합의 원소들을 각각 특정한 순서로 배열하는 것.

🐑 사용방법

# 1
import itertools
itertools.permutations(iterable, r=None)

#2
from itertools import permutations
permutations(iterable, r=None)
  • r 이 지정되지 않았거나 None인 경우, r은 iterable의 전체 길이로 자동 설정되어 모든 순열을 생성한다.

🌿 예제

# 코드 
from itertools import permutations

result = list(permutations('ABC', 2))
print(list(result))

# 결과
# >>> [('A','B'), ('A','C'), ('B','A'), ('B','C'), ('C','A'), ('C','B')]
profile
양치기소녀

0개의 댓글