S
とT
がセットに割り当てられているとします。結合演算子|
を使用せずに、どのようにして2つの集合の和集合を見つけることができますか?これは、例えば、交差点を見つける:"|"を使用せずに2つのセットを1行に結合する方法
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
だから私は|
を使用せずに1行に2つのセットの和集合を見つけることができますか?
S
とT
がセットに割り当てられているとします。結合演算子|
を使用せずに、どのようにして2つの集合の和集合を見つけることができますか?これは、例えば、交差点を見つける:"|"を使用せずに2つのセットを1行に結合する方法
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
だから私は|
を使用せずに1行に2つのセットの和集合を見つけることができますか?
s | t
に相当する、あなたはまた、s.union(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])
参加するあなたは労働組合を意味することにより場合試してみてください:
set(list(s) + list(t))
これは少しハックですが、私は考えることができませんそれを行うためのより良い1つのライナー。それ自体は変更されません。すなわち、それは新しいセットを返すことset.union(other_set)
注:
集合(リスト(s)+リスト(t))は、あなたが組合を行う場合に同じ結果を与えます。 –
私は気付いていますが、彼はPythonの組み込み関数の使用を避けようとしていたようです。そうでなければ、|オペレーター。 – BenjaminCohen
:
>>> from operator import or_
>>> reduce(or_, [{1, 2, 3, 4}, {3, 4, 5, 6}])
set([1, 2, 3, 4, 5, 6])
はこのアプローチを愛し、より機能的で、2つ以上のセットに適用することができます。 –
は、あなたがしたい場合も
union = set(A).union(set(B))
に従うようにあなたがA
連合B
を見つけることができますが、2つのリスト
A = [1,2,3,4]
B = [3,4,5,6]
を持っていると仮定し交差点と交差点を見つけたら、それをf ollow
intersection = set(A).intersection(set(B))
non_intersection = union - intersection
あなたはあなたがしたいことがあり、元のセットを(変更すると罰金している場合、AはB
のすべての要素を持っているでしょうunion
または単純なリスト内包表記
[A.add(_) for _ in B]
を行うことができます場合によってはset.update()
を使用できます。
S.update(T)
n値はNone
ですが、S
は元のS
とT
の和集合になるように更新されます。
あなたは結合する必要がありますか?そうなら、s.union(t) –
(S^T)^(S&T) – mata
なぜ '|'を使用できないのですか? –