给定一个数组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..]
继How to generate all permutations of a list in 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
什么是蟒蛇这样做的最快的方法?用numpy做它可能/更快吗? 谢谢!
我没有得到eval(s,globals(),values)做什么? – Oniropolo 2013-05-07 20:42:28
传入的字符串类似于“a * b * c * d”'。当你评估它时,第二个参数是一个本地字典。例如,'{'a':2,'b':3,'c':1,'d':1}'。它告诉python每个变量的值。 – Felipe 2013-05-08 03:56:27