如何在不使用“|”的情况下在一行中连接两组
假设S
和T
是分配的集合。 不使用连接运算符|
,我怎样才能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的所有元素