Python:返回包含列表的列表中唯一的唯一笛卡尔积?

时间:2013-11-13 05:41:39

标签: python

以下适用于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] ]

的列表时,这似乎也不起作用

1 个答案:

答案 0 :(得分:0)

  1. 要获取唯一元素,您可以使用这样的集合表示法(注意:这不保证订单)

    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
    
  2. 要使程序使用列表列表,只需从

    更改函数声明即可
    def cart_product(*somelists):
    

    def cart_product(somelists):