如何在不使用“|”的情况下在一行中连接两组

假设ST是分配的集合。 不使用连接运算符| ,我怎样才能find两套的结合? 例如,这发现交叉点:

 S = {1, 2, 3, 4} T = {3, 4, 5, 6} S_intersect_T = { i for i in S if i in T } 

那么如何在不使用|情况下在一行中find两组的联合 ?

你可以使用union方法来设置set.union(other_set)

请注意,它会返回一个新的集合,即它不会自行修改。

对不起,为什么我们不能再使用连接操作符?

 >>> set([1,2,3]) | set([4,5,6]) set([1, 2, 3, 4, 5, 6]) 

你可以使用or_

 >>> from operator import or_ >>> reduce(or_, [{1, 2, 3, 4}, {3, 4, 5, 6}]) set([1, 2, 3, 4, 5, 6]) 

假设你也不能使用s.union(t) ,这相当于s | t 你可以试试

 >>> from itertools import chain >>> set(chain(s,t)) set([1, 2, 3, 4, 5, 6]) 

或者,如果你想要一个理解,

 >>> {i for j in (s,t) for i in j} set([1, 2, 3, 4, 5, 6]) 

如果join你的意思是联合,试试这个:

 set(list(s) + list(t)) 

这是一个黑客,但我想不出一个更好的单线程来做到这一点。

假设你有2个列表

  A = [1,2,3,4] B = [3,4,5,6] 

所以你可以findA联盟B如下

  union = set(A).union(set(B)) 

另外如果你想find交集和非交集你做如下

  intersection = set(A).intersection(set(B)) non_intersection = union - intersection 

你可以做union或简单的列表理解

 [A.add(_) for _ in B] 

A将拥有B的所有元素