如何在数组中创建元素的所有组合?

Pet*_*art 2 python

我有一份清单.它包含x个列表,每个列表都包含y个元素.我想将每个元素与所有其他元素配对,只需一次,(a,b = b,a)

编辑:这被批评为太模糊.所以我将描述历史.我的函数产生随机方程并使用遗传技术,变异和杂交它们,选择适应性.经过多次迭代后,它返回一个包含12个对象的列表,按其"等式"属性的适合度排序.使用'parallel python'模块运行此函数8次,返回包含8个12个对象列表(每个对象具有方程属性)的列表.现在,在每个列表中,12个对象已经相互交叉.我希望将列表中的每个对象与所有其他列表中的所有其他对象进行交叉繁殖,但不要与它自己的列表中的对象进行交叉混合.(哇!)

for*_*ran 7

itertools.product 是你的朋友.

关于删除重复项,尝试使用一组集.

现在你想要的更清楚一点:

import itertools

def recombinate(families):
    "families is the list of 8 elements, each one with 12 individuals"
    for fi, fj in itertools.combinations(families, 2):
        for pair in itertools.product(fi, fj):
            yield pair
Run Code Online (Sandbox Code Playgroud)

基本上,采用所有2个系列组合(平行生成的系列)和每对系列,产生所有元素对.