2015-02-06 3 views
-2

이 목록이 있다고 가정 해 봅시다. [1,1,2,2] 이 모든 순열을 실행하고 싶습니다. 동일한 순열을 인쇄하면 4 번 인쇄됩니다. [1,1,1,3]의 경우 동일한 인쇄물이 6 번 인쇄됩니다. [1,1,1,3,3] 12.파이썬에서 중복 순열 계산하기

일반 사항 : (a1)! (a2)! ... (an)! 파이썬에서 그렇게하는 함수가 있습니까? 아니요, 파이썬에서 알고리즘을 제공합니까?

+0

질문에 알고리즘을 포함 시켰습니다. 수식이 알고리즘을 정의합니다. –

+0

좋아, 수학은 알고 있지만 파이썬에이 지식을 함축적으로 암시하는 방법을 모르겠다 –

+0

파이썬에서 계승을 위해 Google을 검색해 보았습니까? 파이썬에서 결과를 곱하는 것? 나는 그것이 최고 코더 수준의 파이썬 경험을 필요로하지 않는다고 생각한다. –

답변

0

다음과 같은 것을 찾고 계십니까?

import math 

def repeats(nums): 
    counts = dict() 
    result = 1 

    for n in nums: 
     if n in counts: 
      counts[n] += 1 
     else: 
      counts[n] = 1 

    for n in counts.keys(): 
     result *= math.factorial(counts[n]) 

    return result 

print repeats([1, 1, 2, 2])  # prints 4 
print repeats([1, 1, 1, 3])  # prints 6 
print repeats([1, 1, 1, 3, 3]) # prints 12 
관련 문제