Asumir que 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 |?
necesitas unión? Si es así, entonces puedes hacer s.union
– Ansumán Bebarta
2 de julio de 2013 a las 15:12
¿Por qué no puedes usar |?
–Scott Bartell
7 sep 2014 a las 20:45
Cualquier razón genérica para no usar | ?
– matanster
28 de marzo de 2019 a las 17:46
Una razón podría ser pasar una operación de conjunto como un argumento de función. Imagina una función, algo como: def apply_set_operation(a, b, set_operation). Al llamar a esta función, preferiría apply_set_operation(a, b, set.union) a apply_set_operation(a, b, set.__or__)
– bsa
20 de mayo de 2019 a las 1:11
¿Cuál es el caso de uso de una función para abstraer operaciones de conjuntos? ¿Por qué no simplemente hacer a | b en lugar de llamar a una función para hacer eso?
– rodrigo-silveira
23 de enero de 2021 a las 0:13
ovrwngtvity
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.
Sin embargo, | puede modificar la variable en línea: set_a |= set_b
– jorgenkg
17 de febrero de 2016 a las 19:13
@jorgenkg igual que: set_a = set_a.union(set_b). Si quiere decir “en el lugar”, ninguno lo hará, ambos crean un nuevo set
– por la noche
10 de noviembre de 2016 a las 2:22
@jorgenkg todavía crea un nuevo conjunto y reemplaza la referencia.
– Álvaro
25 de enero de 2017 a las 21:12
@Alvaro @nitely según una prueba simple: 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 – variable a se modifica en línea. ¿Me estoy perdiendo de algo?
– johndodo
7 de enero de 2018 a las 10:06
No, no lo parece: a = set((1, 2, 3,)); b = set((1, 3, 4,)); c = a; a |= b; assert id(c) == id(a). Incluso si a fue destruido, c no hubiera sido También, c es ahora set([1, 2, 3, 4])entonces el comentario de @jorgenkg es correcto.
los * desempaca el conjunto. El desempaquetado es donde un iterable (por ejemplo, un conjunto o una lista) se representa como cada elemento que produce. Esto significa que el ejemplo anterior se simplifica a {1, 2, 3, 4, 3, 4, 5, 6} que luego se simplifica a {1, 2, 3, 4, 5, 6} porque el conjunto solo puede contener elementos únicos.
Lo que hace el * hacer en la línea 3?
– altabq
14 de abril de 2020 a las 14:32
@altabq Él responde qué expresiones destacadas están en la respuesta. Prueba también a jugar con él en el REPL. Mira qué print(set_1) contra print(*set_1) parece. También esto puede darle más información: stackoverflow.com/questions/12555627/…
– Aarón Bell
1 de enero de 2021 a las 2:52
Gracias @aaron-bell, la respuesta se editó después de que publiqué mi comentario para incluir la explicación.
– altabq
12 de enero de 2021 a las 16:34
Alois Mahdal
Si por unión te refieres a unión, prueba esto:
set(list(s) + list
Es un truco, pero no puedo pensar en una mejor línea para hacerlo.
Lo que hace el * hacer en la línea 3?
– altabq
14 de abril de 2020 a las 14:32
@altabq Él responde qué expresiones destacadas están en la respuesta. Prueba también a jugar con él en el REPL. Mira qué print(set_1) contra print(*set_1) parece. También esto puede darle más información: stackoverflow.com/questions/12555627/…
– Aarón Bell
1 de enero de 2021 a las 2:52
Gracias @aaron-bell, la respuesta se editó después de que publiqué mi comentario para incluir la explicación.
– altabq
12 de enero de 2021 a las 16:34
yogeshjoshi
Supongamos que tiene 2 listas
A = [1,2,3,4]
B = [3,4,5,6]
para que puedas encontrar A Unión B de la siguiente manera
union = set(A).union(set(B))
también si desea encontrar intersección y no intersección, hágalo de la siguiente manera
intersection = set(A).intersection(set(B))
non_intersection = union - intersection
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
necesitas unión? Si es así, entonces puedes hacer s.union
– Ansumán Bebarta
2 de julio de 2013 a las 15:12
¿Por qué no puedes usar
|
?–Scott Bartell
7 sep 2014 a las 20:45
Cualquier razón genérica para no usar
|
?– matanster
28 de marzo de 2019 a las 17:46
Una razón podría ser pasar una operación de conjunto como un argumento de función. Imagina una función, algo como:
def apply_set_operation(a, b, set_operation)
. Al llamar a esta función, preferiríaapply_set_operation(a, b, set.union)
aapply_set_operation(a, b, set.__or__)
– bsa
20 de mayo de 2019 a las 1:11
¿Cuál es el caso de uso de una función para abstraer operaciones de conjuntos? ¿Por qué no simplemente hacer
a | b
en lugar de llamar a una función para hacer eso?– rodrigo-silveira
23 de enero de 2021 a las 0:13