>백엔드 개발 >파이썬 튜토리얼 >Python의 목록에서 반복이 포함된 모든 순열을 어떻게 생성할 수 있나요?

Python의 목록에서 반복이 포함된 모든 순열을 어떻게 생성할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-26 02:48:12393검색

How Can I Generate All Permutations with Repetitions from a List in Python?

목록에서 반복으로 순열 얻기

순열을 사용하여 목록에서 가능한 모든 조합을 생성하려고 할 때 문제가 발생하는 것이 일반적입니다. 반복을 제외하는 것입니다. 이 시나리오에서는 동일한 숫자의 쌍을 포함하여 두 개의 주사위를 굴릴 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.