Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 다른 리스트의 모든 대체 조합 구하기

다른 리스트의 요소를 활용해 대체 조합(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)로 교체된 모든 경우가 자연스럽게 포함됩니다.