프로그래밍 언어/Python

[Python] permutations & combinations (순열과 조합)

benjykim 2021. 2. 2. 18:00
반응형

[Python] permutations & combinations (순열과 조합)

  • itertools: 파이썬에서 반복되는 데이터를 처리하는 기능을 포함한 라이브러리
    • 코테에서 유용한 클래스 2가지
      1. permutations(순열)
      2. combinations(조합)

  • permutations 예시

    >>> from itertools import permutations
    >>> data = ['a', 'b', 'c']
    >>> result = list(permutations(data, 3))
    >>> print(result)
    [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
  • combinations 예시

    >>> from itertools import combinations
    >>> data = ['a', 'b', 'c']
    >>> result = list(permutations(data, 2))
    >>> print(result)
    [('a', 'b'), ('a', 'c'), ('b', 'c')]

알아두면 유용한 것들

  • product: permutations와 같이 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산한다. 다만 원소를 중복하여 뽑는다. (repeat: 뽑고자 하는 데이터의 수)

    • product 예시

      >>> from itertools import product
      >>> data = ['a', 'b', 'c']
      >>> result = list(product(data, repeat=2)) # 2개를 뽑는 모든 순열 구하기(중복 허용)
      >>> print(result)
      [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]
  • combinations_with_replacement: combinations와 같이 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)을 계산한다. 다만 원소를 중복해서 뽑는다.

    • combinations_with_replacement 예시

      >>> from itertools import combinations_with_replacement
      >>> data = ['a', 'b', 'c']
      >>> reuslt = list(combinations_with_replacement(data, 2)) # 2개를 뽑는 모든 조합 구하기(중복 허용)
      >>> print(result)
      [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]
반응형