给定一个数组 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进行操作是否可能/更快?
谢谢!
"a*b*c*d"
。当你使用eval
时,第二个参数是要使用的本地字典。例如,{'a': 2, 'b': 3, 'c': 1, 'd': 1}
。它告诉 Python 每个变量的值。 - Felipeeval
时,请停下来。这通常是一个坏主意。请使用其他答案。 - AmphotericLewisAcid