没有重复的 Python 组合学 - Pyncomb?

标签 python combinatorics

我正在尝试用 Python 中的数据进行一些组合操作。 我看了问题How to generate all permutations of a list in Python ,但认为这不符合我的需要.. 我有这种类型的数据......:

    group1-Steve
    group1-Mark
    group1-Tom
    group2-Brett
    group2-Mick
    group2-Foo
    group3-Dan
    group3-Phil

...我需要将三个元素的所有可能组合与每组中的一个元素组合在一起,不重复,将每个组合保存到列表中。

我知道在这种情况下有 18 种可能的不同组合 (3*3*2=18),但不知道如何编写这段代码。 我读过 Pyncomb 包,但不知道在这种情况下应用的功能;也许有一个功能可以完成这项工作。

希望有人能帮助我...

提前致谢;

佩克斯

最佳答案

最简单的方法是使用 itertools.product() :

group1 = ["Steve", "Mark", "Tom"]
group2 = ["Brett", "Mick", "Foo"]
group3 = ["Dan", "Phil"]
for x in itertools.product(group1, group2, group3):
    print x

打印

('Steve', 'Brett', 'Dan')
('Steve', 'Brett', 'Phil')
('Steve', 'Mick', 'Dan')
('Steve', 'Mick', 'Phil')
('Steve', 'Foo', 'Dan')
('Steve', 'Foo', 'Phil')
('Mark', 'Brett', 'Dan')
('Mark', 'Brett', 'Phil')
('Mark', 'Mick', 'Dan')
('Mark', 'Mick', 'Phil')
('Mark', 'Foo', 'Dan')
('Mark', 'Foo', 'Phil')
('Tom', 'Brett', 'Dan')
('Tom', 'Brett', 'Phil')
('Tom', 'Mick', 'Dan')
('Tom', 'Mick', 'Phil')
('Tom', 'Foo', 'Dan')
('Tom', 'Foo', 'Phil')

关于没有重复的 Python 组合学 - Pyncomb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245108/

相关文章:

python - 来自模型的嵌套排列

python - 高效的项目装箱算法(itertools/numpy)

python - 使用Python读取网页内容

python 脚本执行 git 命令并在 html 页面上显示输出

php - 将河豚加密算法从 php 转换为 python

python - 如何在 Python 中出现所有特定模式的情况下拆分数据框列中的字符串

python - tflearn/tensorflow 不学习 xor

prolog - 在 Prolog 中调用规则

python - 两个长度不等的列表之间的排列

algorithm - 寻找有关理解特定组合优化问题的建议