不使用数据类型Set()设置操作

时间:2016-12-07 18:18:02

标签: python list set

问题:

这里有一个列表作为输入[A,B,C,E]

输出:

[A,B]
[A,C]
[A,E]
[B,C]
[B,E]
[C,E]

基本上,我想把列表与第一个联合起来。

这里是代码

pageSet_list = ['A', 'B', 'C', 'E']

pageSet_set = list() # To create a list of sets so that we can take their union

for page in pageSet_list:
    toBeAdded = set(page)
    pageSet_set.append(toBeAdded)
pageSet_list = list()

for i in range(len(pageSet_set)):
    for j in range(i,len(pageSet_set)):
        z=pageSet_set[i].union(pageSet_set[j])
        if (len(z) == 2): # somethin = set([])
            print 'z: ',z
            pageSet_list.append(z)

此代码的输出:

z:  set(['A', 'B'])
z:  set(['A', 'C'])
z:  set(['A', 'E'])
z:  set(['C', 'B'])
z:  set(['B', 'E'])
z:  set(['C', 'E'])

错误:

z:  set(['C', 'B'])

输出应为z: set(['B', 'C'])

现在最近,我知道set是一个无序的数据结构,因此它不维护元素的任何特定顺序。使用union方法执行两个集合的并集操作会更改元素的顺序。

我的问题是:

如何在不使用数据类型set()?

的情况下执行set操作,并集和交集

1 个答案:

答案 0 :(得分:1)

import itertools

for acom in itertools.combinations('ABCD',2):
    print acom