【发布时间】:2017-04-22 19:33:23
【问题描述】:
问题:
这是一个列表作为输入[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() 的情况下执行集合操作、并集和交集?
【问题讨论】:
-
也许看看NumPy library?
-
订单可以重新创建吗?您可以稍后对数据进行排序以重新建立其顺序吗?以及如何通过交叉路口维持秩序?如果有
(1, 2, 3)和(3, 2),结果是什么? -
所以你想要combinations?我不明白为什么这里需要涉及集合
-
基本上你想要的是不将列表与自身合并(与
set数据类型无关)。您只是在查找列表元素的所有对组合(换句话说,一次两个)。 -
我同意这里的副本;如果你只是在解释器中输入
set(['B', 'C']),它会将顺序反转为set(['C', 'B'])。