我有幾個載體a=[1 2 3 ...]
,b=[1 2 3 ...]
,c=[1 2 3 ...]
。我必須找到從這些向量的元素所組成的所有可能的組合,如:載體元素的組合
[1 1 1]
[1 1 2]
[3 3 3]
etc.
的問題是,我必須排除含有相同的元素,因爲順序並不重要組合。例如,它提供了組合[1 2 1]
,應排除組合[2 1 1]
。我怎麼能用任何編程語言來做到這一點(Python是首選)?
我有幾個載體a=[1 2 3 ...]
,b=[1 2 3 ...]
,c=[1 2 3 ...]
。我必須找到從這些向量的元素所組成的所有可能的組合,如:載體元素的組合
[1 1 1]
[1 1 2]
[3 3 3]
etc.
的問題是,我必須排除含有相同的元素,因爲順序並不重要組合。例如,它提供了組合[1 2 1]
,應排除組合[2 1 1]
。我怎麼能用任何編程語言來做到這一點(Python是首選)?
如果你不是擔心效率這可能會實現。
from itertools import product
def specialCombinations(*vectors):
return {tuple(sorted(i)): i for i in product(*vectors)}.values()
它需要輸入向量的笛卡爾乘積並過濾 那些下置換等效。
我不確定我是否完全瞭解您的要求,但您可能會發現itertools有幫助。
例如:
from itertools import combinations_with_replacement as cr
for a in cr([1,2,3],3):
print a
打印
(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 2, 2)
(1, 2, 3)
(1, 3, 3)
(2, 2, 2)
(2, 2, 3)
(2, 3, 3)
(3, 3, 3)