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

Python 목록의 모든 순열을 어떻게 생성할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-28 10:01:29
원래의
769명이 탐색했습니다.

How Can I Generate All Permutations of a Python List?

목록의 모든 순열 생성

순열은 목록 내 요소의 다양한 배열을 나타냅니다. 목록의 모든 순열을 효과적으로 생성하기 위해 이 기사에서는 여러 가지 접근 방식을 제시합니다.

itertools 라이브러리 사용:

Python 표준 라이브러리는 이를 위해 itertools.permutations 함수를 제공합니다. 목적:

import itertools
list(itertools.permutations([1, 2, 3]))
로그인 후 복사

이 접근 방식은 내장된 순열 알고리즘을 활용하여 다음을 보장합니다.

itertools.permutations 구현 다시 만들기:

itertools.permutations 뒤에 있는 논리를 복제하는 방법도 있습니다.

def permutations(elements):
    if len(elements) <= 1:
        yield elements
        return
    for perm in permutations(elements[1:]):
        for i in range(len(elements)):
            yield perm[:i] + elements[0:1] + perm[i:]
로그인 후 복사

이 접근 방식은 재귀를 활용하여 가능한 모든 것을 반복합니다. 순열.

추가 대안:

[itertools.permutations에 대한 문서](https://docs.python.org/3/library/itertools.html# itertools.permutations)는 생성을 위한 추가 기술을 제공합니다. 순열:

  • 범위(n, n-r, -1)의 데카르트 곱 사용:
def permutations(iterable, r=None):
    pool = tuple(iterable)
    n = len(pool)
    r = n if r is None else r
    if r > n:
        return
    indices = range(n)
    cycles = range(n, n-r, -1)
    [...]
로그인 후 복사
  • 고용 itertools.product:
def permutations(iterable, r=None):
    pool = tuple(iterable)
    n = len(pool)
    r = n if r is None else r
    [...]
로그인 후 복사

이러한 방법은 순열 생성에 대한 다양한 접근 방식을 보여줍니다. 특정 요구 사항에 따라 가장 적합한 기술을 선택하십시오.

위 내용은 Python 목록의 모든 순열을 어떻게 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿