多个列表的唯一唯一笛卡尔积
发布于 2021-01-29 14:59:06
以下代码适用于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
被浏览
73
1 个回答
-
- 要仅获取唯一元素,可以使用这样的set表示法( 注意: 这不能保证顺序)
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):
- 要仅获取唯一元素,可以使用这样的set表示法( 注意: 这不能保证顺序)