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

Python에서 itertools를 사용하여 문자열의 처음 n개의 고유한 순열을 인쇄합니다.

<시간/>

여러 개체의 순열은 업데이트가 다른 순서로 나타날 수 있는 방법을 나타냅니다. 그러나 때때로 우리는 동일한 일련의 주어진 객체에 두 개의 객체를 가질 수 있습니다. 이 경우 두 시퀀스가 ​​같아집니다. 이 문서에서는 주어진 개체 목록에서 고유한 시퀀스만 나타내는 방법을 볼 것입니다.

모듈 itertools에는 이를 달성하는 데 도움이 되는 순열이라는 메서드가 있습니다. 고유한 순열을 얻으려면 고유한 요소만 저장하는 set 메서드를 사용합니다. 그러나 그 전에 정렬된 방법을 사용하여 정렬된 순서로 요소를 가져옵니다.

아래 프로그램에서 K는 가능한 전체 고유 순열 중에서 표시하려는 고유 요소의 최대 수입니다. while 루프를 사용하여 고유 요소가 아직 추가되지 않은 경우에만 표시하려는 최종 목록에 고유 요소를 계속 추가합니다. 설정합니다.

from itertools import permutations
def permutation_value(str, k):
   s = sorted(list(str))
   p = permutations(s)
   m = 0
   set_1 = set()
   str = ''
   while m < k:
      str = ''.join(p.__next__())
      if str not in set_1:
         set_1.add(str)
         print(str)
         m += 1
str = "xyxxz"
i = 12
permutation_value(str, i)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

xxxyz
xxxzy
xxyxz
xxyzx
xxzxy
xxzyx
xyxxz
xyxzx
xyzxx
xzxxy
xzxyx
xzyxx