代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Van Laethem

获取两个列表之间的所有元组排列

  •  -3
  • Jeffrey Van Laethem  · 技术社区  · 6 月前

    给定两个长度为n的列表,我一直在试图找到一种Python式的方法来返回一个n元组列表,其中每个元组列表都是两个列表之间可能值的不同排列。既然如此:

    a = [1, 2]
    b = [3, 4]
    

    我希望输出:

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

    我看了一些问题,比如 permutations of two lists in python 但这并不是我想要的。我看了看 itertools 图书馆里什么也没出现。

    解决这个问题的好方法是什么?

    1 回复  |  直到 6 月前
        1
  •  1
  •   chrslg    6 月前

    你可以这样做

    [list(zip(x,b)) for x in itertools.permutations(a)]
    

    毕竟,你真正想要的是列表中一个的排列,以及所有可能的匹配。所以它更像是一个 permutations 问题比a product 问题。所以在这里,我选择保留 b 按原样,并尝试所有可能的订单 a ,并压缩这些排列 具有 b