以下适用于cart_product([1,2,3],[a,b,c],[v])
,是否也会返回重复的笛卡尔积,如果是这样,如何获得独特的笛卡尔积?
import itertools
def cart_product(*somelists):
for element in itertools.product(*somelists):
print element
当我传入包含列表[ [1,2,3],[a,b,c],[v] ]
答案 0 :(得分:0)
要获取唯一元素,您可以使用这样的集合表示法(注意:这不保证订单)
return list({element for element in itertools.product(*somelists)})
或根据Paul Draper的评论,我们可以像这样做
list(set(itertools.product(*somelists)))
如果您想维持订单
import itertools
def cart_product(somelists):
result, tempSet = [], set()
for element in itertools.product(*somelists):
if element not in tempSet:
tempSet.add(element)
result.append(element)
return result
要使程序使用列表列表,只需从
更改函数声明即可def cart_product(*somelists):
到
def cart_product(somelists):