python itertools
中是否有任何函數需要生成滿足某些條件的所有數字排列。生成固定長度的所有排列,其中元素來自兩個不同的集合
(A,B,C,d)
- a和d:來自
set 1 = {1,2,3}
- b和c:來自
set 2
,其中元件的數量設定2是196. - 排列需要與替換。
所以A和B應該只值從1集B和C只能從集2.如何生成所有與該限制permutaitons取值
我知道如何產生使用itertools
進行置換以生成置換的置換。但我有問題,當談到採取項目從兩套
python itertools
中是否有任何函數需要生成滿足某些條件的所有數字排列。生成固定長度的所有排列,其中元素來自兩個不同的集合
(A,B,C,d)
set 1 = {1,2,3}
set 2
,其中元件的數量設定2是196.所以A和B應該只值從1集B和C只能從集2.如何生成所有與該限制permutaitons取值
我知道如何產生使用itertools
進行置換以生成置換的置換。但我有問題,當談到採取項目從兩套
如果我正確地解釋你的文字,下面的代碼應該是你在找什麼:
import itertools
set1 = [1,2,3]
set2 = [4,5]
for i in itertools.permutations(set1, 2):
for j in itertools.permutations(set2, 2):
print("({},{},{},{})".format(i[0], j[0], j[1], i[1]))
打印
(1,4,5,2)
(1,5,4,2)
(1,4,5,3)
(1,5,4,3)
(2,4,5,1)
(2,5,4,1)
(2,4,5,3)
(2,5,4,3)
(3,4,5,1)
(3,5,4,1)
(3,4,5,2)
(3,5,4,2)
正如@spectras所示,產品更優雅:
p1 = itertools.permutations(set1, 2)
p2 = itertools.permutations(set2, 2)
for i in itertools.product(p1, p2):
print(i[0][0], i[1][0], i[1][1], i[0][1])
正如@spectras建議的那樣,另一種方法是使用產品三次,然後重新排序條目。但是這個也適用。 –
是的,編輯我的答案,但kidos到@spectras – andymar
但是我不明白這些是如何排列的... –
所以......你需要爲兩組生成排列並計算笛卡爾積? (並安排結果一點)從你的問題不是很清楚^^ – spectras
什麼意思'ie | set 2 |是196'? – RomanPerekhrest