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

파이썬의 순열과 조합?

<시간/>

이 섹션에서는 파이썬 프로그래밍 언어를 사용하여 주어진 시퀀스의 순열과 조합을 찾는 방법을 배울 것입니다.

다른 프로그래밍 언어에 비해 Python의 주요 이점 중 하나는 방대한 라이브러리 세트와 함께 제공된다는 것입니다.

우리는 파이썬 내장 패키지를 사용하여 주어진 시퀀스의 순열과 조합을 찾을 것입니다.

순열과 조합을 찾는 알고리즘

  • 1단계 :필요한 패키지를 가져옵니다. 첫 번째 단계는 필요한 패키지를 가져오는 것입니다. itertools 패키지를 사용할 것이므로 다음을 사용하여 가져오기만 하면 됩니다.

>>> import itertools
>>>
  • 2단계 :시퀀스의 모든 순열 및 조합을 가져옵니다. 두 번째 단계는 튜플 목록의 형태로 모든 순열 및 조합을 반환할 입력으로 시퀀스/항목 목록을 입력하는 것입니다.

  • 순열과 조합의 길이도 설정할 수 있습니다.

  • 3단계 :결과 인쇄 마지막 단계는 시퀀스 세트의 모든 순열과 조합을 인쇄하는 것입니다. 루프 기능을 사용하여 결과를 인쇄할 수 있습니다.

순열

세 항목 목록의 순열을 구해 봅시다.

예시 1

from itertools import permutations

seq = permutations(['a','b','c'])

for p in list(seq):
   print(p)

결과

('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')

예시 2:

순열의 길이를 정의하여 순열을 찾습니다.

from itertools import permutations

seq = permutations(['p', 'y', 't', 'h', 'o', 'n'], 2)

for p in list(seq):
   print(p)

결과

('p', 'y')
('p', 't')
('p', 'h')
('p', 'o')
('p', 'n')
('y', 'p')
('y', 't')
('y', 'h')
('y', 'o')
('y', 'n')
('t', 'p')
('t', 'y')
('t', 'h')
('t', 'o')
('t', 'n')
('h', 'p')
('h', 'y')
('h', 't')
('h', 'o')
('h', 'n')
('o', 'p')
('o', 'y')
('o', 't')
('o', 'h')
('o', 'n')
('n', 'p')
('n', 'y')
('n', 't')
('n', 'h')
('n', 'o')

조합

파이썬을 이용하여 시퀀스의 조합을 찾아봅시다.

예 1:조합의 길이 결정

#Import itertools package
from itertools import combinations

#Getting all combination of a particular length.
combi = combinations(['p', 'y', 't', 'h', 'o', 'n'], 5)

#Print the list of combinations

for c in list(combi):
   print(c)

결과

('p', 'y', 't', 'h', 'o')
('p', 'y', 't', 'h', 'n')
('p', 'y', 't', 'o', 'n')
('p', 'y', 'h', 'o', 'n')
('p', 't', 'h', 'o', 'n')
('y', 't', 'h', 'o', 'n')

예시 2:대체물이 있는 조합

#Import itertools package
from itertools import combinations_with_replacement

#Getting all combination by defining a particular length.
combi = combinations_with_replacement(['p', 'y', 't', 'h', 'o', 'n'], 2)

#Print the list of combinations

for c in list(combi):
   print(c)

결과

('p', 'p')
('p', 'y')
('p', 't')
('p', 'h')
('p', 'o')
('p', 'n')
('y', 'y')
('y', 't')
('y', 'h')
('y', 'o')
('y', 'n')
('t', 't')
('t', 'h')
('t', 'o')
('t', 'n')
('h', 'h')
('h', 'o')
('h', 'n')
('o', 'o')
('o', 'n')
('n', 'n')