파이썬에서 문자열의 순열

Manav Narula 2023년1월30일
  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으로 설정하고 끝을 문자열의 길이로 설정합니다.

작가: 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