给定一个数组a=['a','b','c']
,你将如何返回没有重复的数组的笛卡尔积。例子:
[['a', 'a' , 'a' ,'a']
['a', 'a' , 'a' ,'b']
['a', 'a' , 'a' ,'c']
['a', 'a' , 'b' ,'b']
['a', 'a' , 'b' ,'c']
['a', 'a' , 'c' ,'c']
...etc..]
在如何在 Python 中生成列表的所有排列之后,我尝试了:
print list(itertools.permutations(['a', 'b' , 'c'], 4))
[]
print list(itertools.product(['a', 'b' , 'c'], repeat=4)
但是我得到了带有重复项的笛卡尔积。例如,列表将包含两者['a','a','b','b']
,['a','b','b','a']
并且显然是相等的。
注意:我的 'a'、'b'、'c' 是存储数字 1、2、3 的变量。因此,在获得字母组合列表后,我需要:说,
['a','b','c','c'] ----> a*b*c*c = 1*2*3*3 = 18
在 python 中执行此操作的最快方法是什么?用 numpy 可以/更快吗?谢谢!