python - 如何创建不同集合中元素的组合?

标签 python cartesian-product

假设我有 n 个列表,并且它们不是不相交的。我想要制作 n 个元素的每一种组合,我从我拥有的每个列表中获得一个元素,但在该组合中存在不同的元素,并且没有双重组合。所以,[1,1,2]不允许并且 [1,2,3][2,1,3] 相同.

例如,我有A=[1,2,3] , B=[2,4,1] ,和C=[1,5,3] 。所以,我想要的输出是 [[1,2,5],[1,2,3],[1,4,5],[1,4,3],[2,4,1],[2,4,5],[2,4,3],[3,2,5],[3,4,5],[3,1,5]] .

我有搜索谷歌,我认为功能product在模块 itertools可以做到。但是,我不知道如何在每个组合中都不使用相同的元素,并且不使用双重组合。

最佳答案

也许是这样的:

from itertools import product                                               
A=[1,2,3]
B=[2,4,1]
C=[1,5,3]
L = list(set([ tuple(sorted(l)) for l in product(A,B,C) if len(set(l))==3 ]))

当然,如果您使用超过 3 个列表,则必须更改相关值 3

关于python - 如何创建不同集合中元素的组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41259592/

相关文章:

python - 使用稀疏索引和值更新 numpy 数组

python - 使用 Python 2.7 比较 2 个 csv 文件并将不同的行输出到第三个 CSV 文件

python - 双击文件时如何控制运行的Python版本?

python - Python 类是否可以拥有可访问的成员,但不能来自该类的实例?

python - 我可以在 Django 的哪个位置运行启动来加载数据?

java - 执行笛卡尔积时遇到问题

python - 对列表中每一对元素的操作

带剪枝的笛卡尔积的 LINQ 实现

SQL 连接以获取 3 列中的 2 列的笛卡尔积

python - 组合多个列表以获得给定条件的整数