Python 如何在不使用“|”的情况下将两组合并为一行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17429123/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 08:11:05  来源:igfitidea点击:

How to join two sets in one line without using "|"

pythonset

提问by fandyst

Assume that Sand Tare assigned sets. Without using the join operator |, how can I find the union of the two sets? This, for example, finds the intersection:

假设ST被分配了集合。不使用连接运算符|,如何找到两个集合的并集?例如,这会找到交集:

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

So how can I find the union of two sets in one line without using |?

那么如何在不使用的情况下在一行中找到两个集合的并集|

回答by arshajii

Assuming you also can't use s.union(t), which is equivalent to s | t, you could try

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

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

Or, if you want a comprehension,

或者,如果你想要理解,

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

回答by BenjaminCohen

If by join you mean union, try this:

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

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

It's a bit of a hack, but I can't think of a better one liner to do it.

这有点麻烦,但我想不出更好的衬里来做到这一点。

回答by ovrwngtvity

You can use union method for sets: set.union(other_set)

您可以对集合使用联合方法: set.union(other_set)

Note that it returns a new set i.e it doesn't modify itself.

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

回答by Alexander Klimenko

You could use or_alias:

您可以使用or_别名:

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

回答by iyogeshjoshi

Suppose you have 2 lists

假设您有 2 个列表

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

so you can find AUnion Bas follow

所以你可以找到AUnionB如下

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

also if you want to find intersection and non-intersection you do that as follow

另外,如果你想找到交集和非交集,你可以按照以下方式进行

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

回答by Vaibhav Mishra

You can do unionor simple list comprehension

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

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

A would have all the elements of B

A 将拥有 B 的所有元素

回答by Max Candocia

If you are fine with modifying the original set (which you may want to do in some cases), you can use set.update():

如果您可以修改原始集(在某些情况下您可能想要这样做),则可以使用set.update()

S.update(T)

The return value is None, but Swill be updated to be the union of the original Sand T.

返回值是None,但S将更新为原始S和 的并集T

回答by Jamie Saunders

you can just unpack both sets into one like this:

你可以像这样将两套解压成一套:

>>>set_1 = {1, 2, 3, 4}
>>>set_2 = {3, 4, 5, 6}
>>>union = {*set_1, *set_2}
>>>union
{1, 2, 3, 4, 5, 6}