Asumsikan bahwa S
dan T
yang ditugaskan set. Tanpa menggunakan bergabung dengan operator |
, bagaimana saya dapat menemukan union dari dua set? Ini, misalnya, menemukan persimpangan:
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
Jadi bagaimana saya dapat menemukan penyatuan dua set dalam satu baris tanpa menggunakan |
?
Anda dapat menggunakan metode gabungan untuk set: set.uni(other_set)
Catatan bahwa ini akan menghasilkan sebuah set baru saya.e itu doesn't memodifikasi itu sendiri.
Anda bisa menggunakan or_
alias:
>>> 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])
Dengan asumsi anda juga bisa't menggunakan s.uni(t)
, yang setara dengan s | t
, anda bisa mencoba
>>> from itertools import chain
>>> set(chain(s,t))
set([1, 2, 3, 4, 5, 6])
Atau, jika anda ingin pemahaman,
>>> {i for j in (s,t) for i in j}
set([1, 2, 3, 4, 5, 6])
Jika anda baik-baik saja dengan memodifikasi set asli (yang anda mungkin ingin lakukan dalam beberapa kasus), anda dapat menggunakan set.update()
:
S.update(T)
Nilai kembali adalah Tidak
, tapi S
akan diperbarui untuk menjadi persatuan asli S
dan T
.
Jika bergabung dengan anda berarti persatuan, coba ini:
set(list(s) + list(t))
It's sedikit hack, tapi saya dapat't pikir lebih baik satu kapal untuk melakukan itu.
Misalkan anda memiliki 2 daftar
A = [1,2,3,4]
B = [3,4,5,6]
sehingga anda dapat menemukan A
Uni B
sebagai berikut
union = set(A).union(set(B))
juga jika anda ingin menemukan persimpangan dan non-persimpangan anda lakukan sebagai berikut
intersection = set(A).intersection(set(B))
non_intersection = union - intersection