获取两个列表之间所有可能的组合,包括多个连接

Get all possible combinations between two lists, including multiple connections

import itertools
l1 = [1,2,3,4]
l2 = [1,2,3,4]

x = itertools.product(l1, l2)
print(list(x))

我得到了列表 l1 和 l2 的 16 种可能的单独组合,[(1,1), (1,2), ... ] 等。有没有一种方法也可以通过多种方式获得 'connect' 列表的组合?例如,我可以有以下组合 [(1,1), (2,3)][(1,3), (2,4), (3,2)][(1,2), (2,4), (3,3), (4, 1)].

如有任何帮助,我们将不胜感激。

这是您要实现的目标吗?

from itertools import permutations
l1 = [1,2,3,4]
l2 = [1,2,3,4]

for i in l1:
    a= permutations(l2,i)
    for m in list(a):
        print(m)

您可以将问题视为将 l1 个球放入 l2 个箱子。请参阅 了解如何生成所有这些展示位置。

因为在您的示例中,有些地方的任何垃圾箱中都没有一些球,我们可以通过引入一个额外的垃圾箱来处理这个问题,我们将其指定为垃圾箱(换句话说,球最终落在在此箱中,将被视为缺席)。