2017-03-06 12 views
1

N 숫자 세트에서 길이 k의 조합을 생성하고 싶습니다. 여기서 순서 문제와 번호를 바꿀 수 있습니다. 예를 들어 k = 3이고 N = [1, 2, 3]이면 후보 출력은 (1,1,1), (2, 2, 2), (3,2,1) , (1, 2, 3).숫자 세트 N에서 길이 k의 조합 생성, 순서 변경, 대체 허용

나는 다음과 같은 코드

x = list(itertools.combinations_with_replacement(range(1,4),3) 

에 거의 다 해요 생각하지만이 순서는 중요하지 않습니다 결과를 제공합니다 - 그것은 생각, 즉 (1, 2, 3) (3, 2와 동일 , 1), (2, 3, 1) 등

많은 도움을 주셨습니다!

+0

같은 출력을 두 번 보내시겠습니까? 당신이 무작위로 필요합니까? – Amperclock

+1

순열은 요소를 반복하지 않습니다. – chepner

+2

데카르트 제품을 원한다고 들립니다. –

답변

2

당신이 당신이 k != len(N) 그래서 난 당신에게 그것을 떠날 경우 수행 싶은 것이 명확하지 않다 질문에서 지금 product

import itertools 

N = [1, 2, 3] 

y = list(itertools.product(N, N)) 
print(y) # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] 
      #   ^   ^
      #    |_______________| he no longer thinks it's the same 

이다 필요한 것 (슬라이스 N 어쩌면?)

1

이 시도 :

import itertools 
x = [1, 2, 3] 
list(itertools.product(x, repeat=3)) 
+0

그냥 목록에 넣습니다. 아마리스트 (itertools.product (x, repeat = 3))로 편집하는 것이 더 좋다. – Kewl

+1

최근 버전의 Python에서는'[* itertools.product (x, repeat = 3)]' –