파이썬에서 문자열의 순열

Manav Narula 2023년1월30일 Python Python String
  1. itertools.permutations()함수를 사용하여 Python에서 문자열의 모든 순열을 반환합니다
  2. Python에서 문자열에 대한 모든 순열을 반환하는 사용자 정의 함수 만들기
파이썬에서 문자열의 순열

순열이란 재 배열 순서를 고려하지 않고 고유 한 방식으로 주어진 요소 수에 대해 가능한 총 재 배열 수를 의미합니다.

우리가 아는 것처럼 문자열은 개별 문자의 모음으로 생각할 수 있습니다.

이 기사에서는 주어진 문자열에 대해 가능한 모든 순열을 찾으려고 노력할 것입니다.

itertools.permutations()함수를 사용하여 Python에서 문자열의 모든 순열을 반환합니다

itertools모듈은 다른 반복 가능한 객체를 만들고 작업하는 데 사용됩니다. 이 모듈의permutations()함수는 주어진 값 세트에 대해 가능한 모든 배열을 리턴 할 수 있습니다.
요소의 가능한 배열을 포함하는 튜플을 포함하는itertools유형 객체를 반환합니다. 목록을 사용하여이 개체의 요소를 볼 수 있습니다. 이 함수를 문자열과 함께 사용할 수도 있습니다.

예를 들면

from itertools import permutations

lst = list(permutations("day"))
print(lst)

출력:

[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')]

문자 배열을 포함하는 출력에 생성 된 튜플을 확인하십시오. join () 함수와 list comprehension 메서드를 사용하여 이것을 문자열 목록으로 변경할 수 있습니다.

다음 코드를 참조하십시오.

from itertools import permutations

lst = ["".join(p) for p in permutations("day")]
print(lst)

출력:

['day', 'dya', 'ady', 'ayd', 'yda', 'yad']

join()함수를 사용하여 튜플 요소를 결합하고 목록을 반복하여 각 튜플에 사용합니다.

Python에서 문자열에 대한 모든 순열을 반환하는 사용자 정의 함수 만들기

문자열의 모든 순열을 찾는 간단한 함수를 만들 수 있습니다. 재귀 함수를 만들 것입니다. 이 메서드에서는 문자열 요소를 한 번만 교체하고 새로운 배열로 함수를 다시 호출합니다. 최종 준비를 표시합니다.

다음 코드에서 위의 논리를 구현합니다.

def string_permutations(s, i, n):
    if i == n:
        print("".join(s))
    else:
        for j in range(i, n):
            s[i], s[j] = s[j], s[i]
            string_permutations(s, i + 1, n)
            s[i], s[j] = s[j], s[i]


a = "day"
x = len(a)
s = list(a)
print(permute(s, 0, x))

출력:

day
dya
ady
ayd
yad
yda
None

보시다시피 시작 위치와 끝 위치는 재 배열을 완료 할 위치를 지정합니다. 문자열은 문자 목록으로도 전달됩니다. 가능한 모든 순열을 찾기 위해 시작을 0으로 설정하고 끝을 문자열의 길이로 설정합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python String