Cómo unir dos juegos en una línea sin usar “|”

Supongamos que S y T son conjuntos asignados. Sin utilizar 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 | ?

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.

Lo sentimos, ¿por qué no podemos usar el operador de unión de nuevo?

 >>> set([1,2,3]) | set([4,5,6]) set([1, 2, 3, 4, 5, 6]) 

Podrías usar or_ alias:

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

Suponiendo que usted tampoco puede usar s.union(t) , que es equivalente a s | t s | t , podrías intentar

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

O, si quieres una comprensión,

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

Si por unión te refieres a unión, prueba esto:

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

Es un poco pirateado, pero no puedo pensar en un mejor forro para hacerlo.

Supongamos que tienes 2 listas

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

para que puedas encontrar A unión B como sigue

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

También si desea encontrar una intersección y una no intersección, hágalo de la siguiente manera.

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

Si no está de acuerdo con la modificación del conjunto original (lo que quizás desee hacer en algunos casos), puede usar set.update() :

 S.update(T) 

El valor de retorno es None , pero S se actualizará para que sea la unión de S y T originales.

Puedes hacer union o simple lista de comprensión.

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

A tendría todos los elementos de B