多个列表的唯一唯一笛卡尔积

发布于 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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    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
    
    1. 要使您的程序可以使用列表列表,只需将函数声明从
      def cart_product(*somelists):
      

        def cart_product(somelists):
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看