【问题标题】:How can I find the Cartesian Product of a list of vectors?如何找到向量列表的笛卡尔积?
【发布时间】:2018-09-28 15:53:57
【问题描述】:

我有一个问题,我现在无法解决。基本上,我的数据格式如下:

  • 有一个 Vector 具有一定数量的元素(比如三个,所以我们以 (1, 2, 3) 为例。在本例中,维度为 3。
  • 此向量在列表中重复n

所以我在这个例子中有[(1, 2, 3), (1, 2, 3)] 如果n = 2。我现在想要的是一个新的向量列表,其中列表中 Vector 中的每个元素都与其他元素中的所有其他元素组合在一起。在这个例子中,我的预期输出是:

[(1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)]

现在,对于像这样的小列表,这可以使用简单的循环来完成,但我的问题是:我怎样才能编写一个函数来为我提供x 维度的输入向量的所有此类组合和y 列表中此类向量的数量?

【问题讨论】:

    标签: python list iterator permutation


    【解决方案1】:

    你好像需要@987654321@:

    a = [(1,2,3), (1,2,3)]
    
    list(product(*a))
    #[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
    

    【讨论】:

    • 您的方法不会返回预期的输出;例如,它不会返回 (3,3),因为尽管有 OP 的条款,但他并不是在寻找排列。
    • @zipa 如何改进标题以使问题更清晰?
    • @aliasguru 这种操作的名字是Cartesian Product
    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2012-03-24
    • 2012-11-28
    • 2012-08-27
    • 2021-06-18
    相关资源
    最近更新 更多