Asume eso S
y T
son conjuntos asignados. Sin usar el operador de unión |
, ¿cómo puedo encontrar la unión de los dos conjuntos? Esto, por ejemplo, encuentra la intersección:
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
Entonces, ¿cómo puedo encontrar la unión de dos conjuntos en una línea sin usar |
?
|
?|
?def apply_set_operation(a, b, set_operation)
. Cuando se llama a esta función, preferiríaapply_set_operation(a, b, set.union)
aapply_set_operation(a, b, set.__or__)
Respuestas:
Puede usar el método de unión para conjuntos:
set.union(other_set)
Tenga en cuenta que devuelve un nuevo conjunto, es decir, no se modifica a sí mismo.
fuente
|
puede modificar la variable en línea:set_a |= set_b
set_a = set_a.union(set_b)
. Si se refiere a "in situ", no va a hacer que, tanto crear un nuevoset
a = set((1, 2, 3,)); b = set((1, 3, 4,)); id_a = id(a); a |= b; assert id_a == id(a)
@jorgenkg tiene razón: la variablea
se modifica en línea. ¿Me estoy perdiendo de algo?a = set((1, 2, 3,)); b = set((1, 3, 4,)); c = a; a |= b; assert id(c) == id(a)
. Incluso sia
fue destruido,c
no lo habría sido. Además,c
es ahoraset([1, 2, 3, 4])
, así que el comentario de @ jorgenkg es correcto.Podrías usar
or_
alias:fuente
Si está de acuerdo con modificar el conjunto original (que es posible que desee hacer en algunos casos), puede usar
set.update()
:El valor de retorno es
None
, peroS
se actualizará para ser la unión del originalS
yT
.fuente
Suponiendo que tampoco puede usar
s.union(t)
, lo que es equivalente as | t
, podría intentarO, si quieres una comprensión,
fuente
Si por unirse quieres decir unión, prueba esto:
Es un truco, pero no puedo pensar en un mejor revestimiento para hacerlo.
fuente
list
yset
están construidas en funciones de pythonSupongamos que tienes 2 listas
para que pueda encontrar
A
Union de laB
siguiente maneraAdemás, si desea encontrar intersección y no intersección, haga lo siguiente
fuente
Puede descomprimir ambos conjuntos en uno como este:
El
*
desempaqueta el conjunto. Desempaquetar es donde un iterable (por ejemplo, un conjunto o lista) se representa como cada elemento que produce. Esto significa que el ejemplo anterior se simplifica y{1, 2, 3, 4, 3, 4, 5, 6}
luego se simplifica{1, 2, 3, 4, 5, 6}
porque el conjunto solo puede contener elementos únicos.fuente
*
en la línea 3?Puedes hacer
union
o simplemente listar la comprensiónA tendría todos los elementos de B
fuente