Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 리스트의 모든 순열(Permutation) 생성하는 방법

Python에서 리스트의 모든 순열 생성하기

Python에서 리스트의 모든 순열(permutation)을 구하려면 표준 라이브러리인 itertools 모듈의 permutations() 함수를 사용하면 됩니다. 이 함수는 입력된 iterable의 요소들로 만들 수 있는 가능한 모든 순서 조합을 튜플(tuple) 형태로 반환합니다.

기본 사용 예제

다음과 같이 permutations() 함수를 호출한 뒤, 결과를 list()로 감싸면 전체 순열을 리스트 형태로 얻을 수 있습니다.

import itertools

perms = list(itertools.permutations([1, 2, 3]))
print(perms)

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

알아두면 좋은 점

permutations()는 각 순열을 튜플로 반환합니다. 만약 리스트 형태가 필요하다면 다음과 같이 변환할 수 있습니다.

import itertools

perms = [list(p) for p in itertools.permutations([1, 2, 3])]
print(perms)

또한 두 번째 인자에 길이 r을 지정하면 부분 순열만 생성할 수도 있습니다.

import itertools

print(list(itertools.permutations([1, 2, 3], 2)))
# [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

참고로 n개의 원소를 가진 리스트의 전체 순열 개수는 n!이므로, 원소 수가 많아질수록 결과의 크기가 기하급수적으로 증가한다는 점을 유의해야 합니다.