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

문자열의 크기 r의 모든 순열을 얻는 Python 프로그램

<시간/>

문자열 s와 숫자 r이 있다고 가정합니다. s에 있는 r개의 문자에 대한 모든 순열을 표시해야 합니다. 모든 순열을 가져오는 permutations() 함수가 있습니다. 이 함수는 itertools 라이브러리 안에 있습니다.

따라서 입력이 s ="HELLO" r =3과 같으면 출력은

>['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL',
'ELO', 'ELH', 'ELL','ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE',
'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL',
'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • vals:=s에서 r 크기의 모든 순열이 있는 목록
  • res:=새 목록
  • vals의 각 x에 대해 다음을 수행합니다.
    • 문자열 x의 목록을 문자열로 변환하고 res에 삽입
  • 반환 결과

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

from itertools import permutations
   def solve(s, r):
   vals=list(permutations(s,r))
   res=[]
   for x in vals:
      res.append(''.join(x))
   return res

s = "HELLO"
r = 3
print(solve(s, r))

입력

"HELLO", 2

출력

['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE',
'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO',
'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE',
'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH',
'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL',
'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']