[파이썬 개념] permutation 순열 - itertools.permutations(arr, n)

timtam·2022년 2월 8일
0

Python_개념

목록 보기
14/32

순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다. 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이며 순열이라는 의미의 영어 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다.
출처 : [네이버 지식백과] 순열 Permutation, 順列

순열은 순서를 고려하기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면
[(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 가 나오게 된다. 즉 순열에서는 (A, B)와 (B, A)는 다른 것이다.
출처: https://velog.io/@dramatic/Python-permutation-combination-%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9

itertools.permutations(arr,n)
여기서 arr는 서로 다른 요소가 들어있는 리스트를 의미하며,위의 statement를 실행하면, 이 리스트 중에서 n개의 원소를 골라 묶은 것을 tuple 형태로 반환한다.

import itertools
arr = ['A','B','C']
nPr = itertools.permutations(arr,2)
print(list(nPr))
--------------------------------------------
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

from itertools import permutations하면
함수 사용시 permutations(arr,n)만 해도 됨
(itertools.permutations(arr,n)대신에)

>>> from itertools import permutations
>>> arr = ['a', 'b', 'c']
>>> nPr = list(permutations(arr,2))
>>> nPr
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

0개의 댓글