使用python生成不同集合中的元素组合

2024-04-20 09:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种更像python的方法来编写这个代码。我试图找出两个元素在不同不同集合中的所有组合,但不包括同一集合中成员之间的组合。所以如果0和1在同一个集合中,我不想要01的组合。你知道吗

我更喜欢这样的模块。我看着https://docs.python.org/2/library/itertools.html 但这需要输入一个列表,并给出其元素的组合。我想输入多个集合。你知道吗

我想我需要itertools.组合生成所有组合,然后减去相同集合中的组合,但这似乎是浪费。有更好的办法吗?你知道吗

示例0

输入

setA=[0,1,4]

设定值=[2,3]

预期输出

边包含(['02','03','13','12','42','43'])

例1

输入

setC=[0,2]

setD=[1]

集合=[3]

预期输出

边包含集合['32','31','01','21','30']

代码

edge= set()
edges= set()
setA = set([0, 1, 4])
setB = set([2, 3])
setC = set([0,2])
setD = set([1])
setE = set([3])

print "Two set combinations of elements (not between elements in same set)"

for i in setA:
    for j in setB:
        if str(i)+str(j) in edge:
            pass
        edge.add( str(i)+str(j) )

print edge


print "Three set combinations of elements (not between elements in same set)"


for i in setC:
    for j in setD:
        if str(i)+str(j) in edges:
            pass
        edges.add( str(i)+str(j) )
        for k in setE:
            if str(k)+str(i) in edges:
                pass
            edges.add( str(k)+str(i) )
            if str(k)+str(j) in edges:
                pass
            edges.add( str(k)+str(j) )


print edges

Tags: 代码inaddforifpasselementsprint