Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 문자열의 가능한 모든 순열을 찾는 방법은 무엇입니까?

<시간/>

주어진 문자열의 가능한 모든 순열을 찾으려면 permutations(iterable[, r])라는 유용한 메서드가 있는 itertools 모듈을 사용할 수 있습니다. 이 메서드는 반복 가능한 요소의 연속적인 r개 길이 순열을 튜플로 반환합니다.

모든 순열을 문자열로 얻으려면 함수 호출을 반복하고 튜플을 조인해야 합니다. 예:

 >>>from itertools import permutations
>>>print [''.join(p) for p in permutations('dune')]
['dune','duen', 'dnue', 'dneu', 'deun', 'denu', 'udne', 'uden', 'unde', 'uned', 'uedn','uend', 'ndue', 'ndeu', 'nude',
 'nued', 'nedu', 'neud', 'edun', 'ednu','eudn', 'eund', 'endu', 'enud']

내장된 메서드를 사용하고 싶지 않지만 직접 만드는 경우 다음 재귀 솔루션을 사용할 수 있습니다.

 def permutations(string, step = 0):
    if step == len(string):
        # we've gotten to the end, print the permutation
        print "".join(string)
     for i in range(step, len(string)):
        # copy the string (store as array)
        string_copy = [c for c in string]
         # swap the current index with the step
        string_copy[step], string_copy[i] =string_copy[i], string_copy[step]
         # recurse on the portion of the stringthat has not been swapped yet
        permutations(string_copy, step + 1)
print (permutations ('one'))

출력

one
oen
noe
neo
eno
eon
None