다른 리스트의 요소를 활용해 대체 조합(replacement combination)을 모두 구해야 하는 경우, 파이썬의 itertools 모듈에서 제공하는 combinations 메서드와 list 메서드를 사용하면 간단하게 해결할 수 있습니다.
예제
아래는 실제 구현 예시입니다.
from itertools import combinations
my_list = [54, 98, 11]
print("The list is :")
print(my_list)
replace_list = [8, 10]
my_result = list(combinations(my_list + replace_list, len(my_list)))
print("The result is :")
print(my_result)
출력 결과
The list is :
[54, 98, 11]
The result is :
[(54, 98, 11), (54, 98, 8), (54, 98, 10), (54, 11, 8), (54, 11, 10), (54, 8, 10), (98, 11, 8), (98, 11, 10), (98, 8, 10), (11, 8, 10)]
코드 설명
itertools모듈에서combinations를 임포트하여 필요한 패키지를 환경에 준비합니다.원본 리스트
my_list를 정의하고 콘솔에 출력합니다.대체 요소로 사용할 별도의 리스트
replace_list를 정의합니다.my_list + replace_list로 두 리스트를 하나로 연결한 뒤combinations()함수에 전달하고, 원본 리스트의 길이(len(my_list))만큼의 모든 조합을 생성합니다.생성된 조합 객체는
list()메서드를 통해 리스트 형태로 변환됩니다.변환된 결과를 변수
my_result에 할당합니다.최종 결과를 콘솔에 출력합니다.
참고 사항
combinations(iterable, r)는 입력 iterable에서 r개의 요소를 선택하는 순서 없는 조합을 반환합니다. 위 예제에서는 두 리스트를 합친 5개의 요소 중 3개를 뽑는 조합, 즉 C(5, 3) = 10가지가 모두 출력되며, 이 결과 안에는 원본 리스트의 각 요소가 대체 리스트의 요소(8, 10)로 교체된 모든 경우가 자연스럽게 포함됩니다.