목록에서 반복으로 순열 얻기
순열을 사용하여 목록에서 가능한 모든 조합을 생성하려고 할 때 문제가 발생하는 것이 일반적입니다. 반복을 제외하는 것입니다. 이 시나리오에서는 동일한 숫자의 쌍을 포함하여 두 개의 주사위를 굴릴 때 36개의 결과를 모두 생성하는 것을 목표로 합니다.
이 제한 사항을 해결하려면 데카르트 곱의 개념을 활용해야 합니다. 두 세트의 데카르트 곱은 해당 세트의 직접 곱을 나타냅니다. 이 경우 [1, 2, 3, 4, 5, 6]을 포함하는 집합에 대한 데카르트 곱은 {1, 2, 3, 4, 5, 6} x {1, 2, 3, 4입니다. , 5, 6}.
Python 표준 라이브러리는 데카르트 곱을 계산하는 기능을 제공하는 itertools 모듈을 제공합니다. 제품 방법을 사용하고 원하는 반복 횟수(예: 반복=2)로 반복 매개변수를 지정하면 반복을 포함하여 가능한 모든 조합을 생성할 수 있습니다.
예:
import itertools die_faces = [1, 2, 3, 4, 5, 6] result = [p for p in itertools.product(die_faces, repeat=2)]
이 코드는 다음과 같은 출력을 생성합니다.
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
이 결과에는 두 개의 주사위를 굴릴 때 가능한 36가지 결과가 모두 포함되어 있습니다. 반복이 고려됩니다.
위 내용은 Python의 목록에서 반복이 포함된 모든 순열을 어떻게 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!