Engineering Note

[Python] combinations, permutations 함수 본문

Programming Language/Python

[Python] combinations, permutations 함수

Software Engineer Kim 2021. 12. 30. 01:40

permutations 함수

  • 서로 다른 n개중에서 r개를 골라 나열하는 것을 순열이라 하는데 이러한 순열을 구해주는 파이썬 함수

시퀀스 자료형과 r에 해당하는 숫자를 함수의 인자로 넘겨 주면 된다.

from itertools import combinations,permutations

orders = ["XYZ", "XWY", "WXA"]


print(list(permutations(orders,2)))

출력결과

combinations

  • 서로 다른 n개중에서 r개를 고르는 경우를 조합이라 하는데 이러한 조합을 구해주는 파이썬 함수

시퀀스 자료형과 r에 해당하는 숫자를 함수의 인자로 넘겨주면 된다
이때 함수의 반환은 객체이므로 list 함수로 리스트 자료형으로 만들어 준 후에 출력해서 결과를 확인 할 수 있다.

이때 각 조합의 경우의 수는 튜플 형태를 원소로한다. 아래의 예를 보면 orders(3개의 원소)에서 2가지를 뽑는 경우의 수는 총 3가지인데 ('XYZ','XWY'), ('XYZ','WXA'), ('XWY','WXA')이다. 이 경우를 튜플형태로 말고 문자열로 묶어서 보면 'XYZ'와 'XWY'를 합친 'XYZXWY', 'XYZWXA', 'XWYWXA'가 된다. 이때 주의할 점이 있다. 만약에 orders가 아래의 주어진대로 ["XYZ", "XWY", "WXA"]의 순서가 아니라 ["WXA","XYZ", "XWY", ]였다고 가정해보자. 이때 위와 같이 조합의 가지수를 구하고 튜플형태가 아니라 하나의 문자열로 합친다면 다음과 같다. "WXAXYZ", "WXAXWY", "XYZXWY"이다. 이유는 튜플형태로 구해진 경우가 인자의 순서 그대로([("WXA","XYZ"), ("WXA","XWY"),("XYZ","XWY")]) 구해지기 때문이다. 그러므로 이러한 경우를 대비하여 인자로 넘겨주는 시퀀스자료형을 정렬을 한 형태로 넘겨 주면 문제를 해결할 수 있다.

from itertools import combinations,permutations

orders = ["XYZ", "XWY", "WXA"]

print(list(combinations(orders,2)))

출력결과

Comments