English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderá todo sobre los conjuntos de Python; cómo crearlos, agregar o eliminar elementos dentro de ellos, y todas las operaciones que se pueden realizar con conjuntos en Python.
Los conjuntos son conjuntos desordenados de proyectos. Cada elemento es único (sin elementos repetidos) y debe ser inmutable (no puede cambiar).
Pero, el conjunto en sí es mutable. Podemos agregar o eliminar proyectos en él.
Los conjuntos se pueden usar para realizar operaciones matemáticas de conjuntos, como la unión, la intersección, la diferencia simétrica, etc.
A través de colocar todos los proyectos (elementos) dentro de los corchetes {} y separarlos con comas o usar funciones integradas para crear un conjunto set().
puede tener cualquier número de elementos y pueden tener diferentes tipos (enteros, flotantes, tuplas, cadenas, etc.). Pero el conjunto no puede tener elementos mutables (por ejemplolistaodiccionario) como sus elementos.
# Conjunto de enteros mi_set = {1, 2, 3} # Output: Elemento aleatorio # Conjunto con tipos de datos mixtos mi_set = {1.0, "Hola", (1, 2, 3)} # Output: Elemento aleatorio
intenta también el siguiente ejemplo.
# Conjunto sin elementos repetidos # Salida: {1, 2, 3, 4} mi_set = {1,2,3,4,3,2} # Output: Elemento aleatorio # El set no puede contener elementos mutables # Aquí [3,4] es una lista mutable # Si descomentas la línea12fila, # Esto causará un error. # TypeError: unhashable type: 'list' #my_set = {1, 2, [3, 4]) # Podemos generar un conjunto a partir de una lista # Salida: {1, 2, 3} mi_set = set([1,2,3,2]) # Output: Elemento aleatorio
Crear un conjunto vacío es un poco especial.
Los corchetes vacíos {} crean un diccionario vacío en Python. Para crear un conjunto sin elementos, usamos la función set() sin parámetros.
# Inicializar usando {} a = {} # Comprobar el tipo de datos de a # Output: <class 'dict'> print(type(a)) # Inicializar usando set() a = set() # Comprobar el tipo de datos de a # Output: <class 'set'> print(type(a))
El conjunto es mutable. Pero debido a que son desordenados, los índices no tienen sentido.
No podemos usar índices o cortes para acceder o cambiar elementos del conjunto. El conjunto no los admite.
Podemos usar el método add() para agregar un solo elemento, y el método update() para agregar varios elementos. El método update() puede tomartupla,lista,cadenau otro conjunto como parámetro. En todos los casos, evita la repetición.
# Inicializar my_set mi_set = {1,3} # Output: Elemento aleatorio # Si descomentas la línea9fila, # Obtendrás un error # TypeError: 'set' object does not support indexing #my_set[0] # Añadir un elemento # Salida: {1, 2, 3} mi_set.add(2) # Output: Elemento aleatorio # Añadir varios elementos # Salida: {1, 2, 3, 4} mi_set.update([2,3,4]) # Output: Elemento aleatorio # Añadir lista y conjunto # Salida: {1, 2, 3, 4, 5, 6, 8} mi_set.update([4,5], {1,6,8) # Output: Elemento aleatorio
Al ejecutar el programa, la salida será:
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Se pueden usar los métodos discard() y remove() para eliminar elementos específicos del conjunto.
La única diferencia entre ambos es que si se utiliza discard() y el elemento no existe en el conjunto, se mantiene inmutable. Pero remove() lanzará un error en este caso.
El siguiente ejemplo ilustrará esto.
# Inicializar my_set mi_set = {1, 3, 4, 5, 6} # Output: Elemento aleatorio # 抛弃一个元素 # Salida: {1, 3, 5, 6} my_set.discard(4) # Output: Elemento aleatorio # Eliminar un elemento # Salida: {1, 3, 5} mi_set.remove(6) # Output: Elemento aleatorio # 抛弃一个元素 # 没有出现在 my_set # Salida: {1, 3, 5} my_set.discard(2) # Output: Elemento aleatorio # remove一个元素 # 没有出现在 my_set # 如果没有注释#my_set.remove(2# Descartar un elemento my_set.discard( # Eliminar un elemento 2 # No se encuentra en my_set2)
# Si no hay comentario #my_set.remove(
),
# Se lanzará un error.
# Inicializar my_set # Output: KeyError: #my_set.remove( # Output: Elemento aleatorio Del mismo modo, podemos usar el método pop() para eliminar y devolver un proyecto. Los conjuntos son desordenados, no se puede determinar qué proyecto se eliminará. Esto es completamente aleatorio. Podemos usar el método clear() para eliminar todos los elementos de un conjunto. # Output: Conjunto de elementos únicos my_set = set("HelloWorld") # Pop un elemento # Output: Elemento aleatorio # Output: Elemento aleatorio print(my_set.pop()) # Pop elemento aleatorio # Output: Elemento aleatorio
# Borrar my_set
# Output: set()
my_set.clear()1, 2, 3, 4, 5} print(my_set)4, 5, 6, 7, 8}
Los conjuntos se pueden usar para realizar operaciones matemáticas de conjuntos, como la unión, la intersección, la diferencia y la diferencia simétrica. Se pueden realizar mediante operadores o métodos...
Consideremos los siguientes dos conjuntos para las siguientes operaciones.
# 初始化 A y B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} >>> A = { # Salida: {1, 2, 3, 4, 5, 6, 7, 8} >>> B = {
Prueba los siguientes ejemplos en el shell de Python.
unión de conjuntos La unión de A y B es el conjunto de todos los elementos de ambos conjuntos. {1, 2, 3, 4, 5, 6, 7, 8} La unión se realiza utilizando el operador |. También se puede realizar utilizando la función union(). # Uso de | operador {1, 2, 3, 4, 5, 6, 7, 8}
>>> B# Uso de la función union>>> A.union(B)# Uso de la función de unión en B
>>> B.union(A)
# 初始化 A y B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} intersección de conjuntos La intersección es un grupo de elementos que ambos conjuntos tienen en común.4, 5} El punto de intersección se realiza utilizando el operador &. La función intersection() puede realizar la misma operación.
Prueba los siguientes ejemplos en el shell de Python.
# Uso de & operador # Output: { {4, 5} print(A & B) # Uso de la función de intersección en A {4, 5}
# Uso de la función de intersección en B->>> B.intersection(A)-diferencia de conjuntos
La diferencia entre A y B (A -La diferencia se realiza utilizando. Los elementos en A pero no en B forman un grupo. Los elementos en B) son los que solo están en A pero no en B. Del mismo modo, B
# 初始化 A y B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Uso de la función de diferencia en A - operador # Output: {1, 2, 3} print(A - B)
Prueba los siguientes ejemplos en el shell de Python.
# Uso de la función de diferencia en A >>> A.difference(B) {1, 2, 3} # En B-运算符符 >>>运算符符 - >>> B {8, 6, 7} A # Usar la función diferencia en B {8, 6, 7}
Diferencia simétrica de conjunto
La diferencia simétrica entre A y B es un grupo de elementos que están en A y B, pero no en ambos.
# 初始化 A y B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Usar el operador ^ # Salida: {1, 2, 3, 6, 7, 8} print(A ^ B)
Prueba los siguientes ejemplos en el shell de Python.
# Usar la función symmetric_difference en A >>> A.symmetric_difference(B) {1, 2, 3, 6, 7, 8} # Usar la función symmetric_difference en B >>> B.symmetric_difference(A) {1, 2, 3, 6, 7, 8}
Hay muchos métodos de conjunto en Python, algunos de los cuales ya se han utilizado. Esta es una lista de todos los métodos disponibles para el objeto set.
Método | Descripción |
---|---|
add() | Añadir un elemento al conjunto |
clear() | Eliminar todos los elementos del conjunto |
copy() | Devolver una copia del conjunto |
difference() | Devolver la diferencia de dos o más conjuntos como un nuevo conjunto |
difference_update() | Eliminar todos los elementos de otro conjunto de este conjunto |
discard() | Si el elemento es miembro, eliminarlo del conjunto. (Si el elemento no está en el conjunto, no se realiza ninguna operación) |
intersection() | Devolver la intersección de dos conjuntos como un nuevo conjunto |
intersection_update() | Actualizar el conjunto con la intersección de sí mismo y otro |
isdisjoint() | True si el punto de intersección de dos conjuntos está vacío, devuelve |
issubset() | Devolver True si otro conjunto contiene este conjunto |
issuperset() | Devolver True si este conjunto contiene otro conjunto |
pop() | Eliminar y devolver un elemento arbitrario del set. Aumenta KeyError si el conjunto está vacío |
remove() | Eliminar un elemento del conjunto. Si el elemento no es miembro, lanza un KeyError |
symmetric_difference() | Devolver la diferencia simétrica de dos conjuntos como un nuevo conjunto |
symmetric_difference_update() | Actualizar un conjunto con la diferencia simétrica de sí mismo y otro |
union() | Devolver la unión del conjunto en el nuevo conjunto |
update() | Actualizar el conjunto con la unión de sí mismo y otros elementos |
Podemos usar la palabra clave in para probar si un elemento existe en el conjunto.
# Inicializar my_set my_set = set("apple") # Verificar si "a" existe # Salida: True print('a' in my_set) # Verificar si "p" existe # Salida: False print('p' not in my_set)
Con un bucle for, podemos recorrer cada elemento del conjunto.
>>> for letter in set("apple"): ... print(letter) ... a p e l
Funciones integradas como all(), any(), enumerate(), len(), max(), min(), sort(), sum() y otras se utilizan comúnmente para ejecutar diferentes tareas junto con set.
Función | Descripción |
---|---|
all() | Si todos los elementos del conjunto son true (o el conjunto está vacío), devuelve True. |
any() | Si cualquier elemento del conjunto es true, devuelve True. Si el conjunto está vacío, devuelve False. |
enumerate() | Devuelve un objeto de enumeración. Contiene pares de índice y valor de todos los elementos. |
len() | Devuelve la longitud del conjunto (número de elementos). |
max() | Devuelve el elemento más grande del conjunto. |
min() | Devuelve el elemento más pequeño del conjunto. |
sorted() | Devuelve una nueva lista ordenada de los elementos del conjunto (sin ordenar el conjunto en sí). |
sum() | Devuelve la suma total de todos los elementos del conjunto. |
Frozenset es una nueva clase con características de conjunto, pero una vez asignada, sus elementos no pueden cambiarse. Los tuplos son listas inmutables, mientras que los conjuntos congelados son conjuntos inmutables.
Los conjuntos mutables no son hashables, por lo que no se pueden usar como claves de diccionario. Por otro lado, el frozenset es hashable y se puede usar como clave de diccionario.
Se puede usar la funciónFrozenset()CreaciónFrozensets.
Este tipo de datos admite métodos como copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference() y union(). Debido a su inmutabilidad, no hay métodos para agregar o eliminar elementos.
# 初始化 A y B A = frozenset([1, 2, 3, 4]) B = frozenset([3, 4, 5, 6])
Pruebe estos ejemplos en el shell de Python.
>>> A.isdisjoint(B) False >>> A.difference(B) frozenset({1, 2) >>> A | B frozenset({1, 2, 3, 4, 5, 6) >>> A.add(3) ... AttributeError: El objeto 'frozenset' no tiene el atributo 'add'