Método copy() de conjuntos en Python

La función copy() en Python se utiliza para crear una copia superficial (shallow copy) de un conjunto (set). Esto significa que se crea un nuevo conjunto que contiene los mismos elementos que el conjunto original, pero los elementos en sí mismos no se copian. La copia es independiente del conjunto original, lo que significa que puedes realizar cambios en la copia sin afectar al conjunto original y viceversa. Veamos una lección detallada sobre cómo usar copy() en conjuntos con ejemplos:


Copia de un conjunto simple


# Crear un conjunto original
original_set = {1, 2, 3, 4, 5}

# Crear una copia del conjunto original
copia_set = original_set.copy()

# Modificar la copia
copia_set.add(6)

# Verificar que el conjunto original no se ve afectado
print("Conjunto original:", original_set)  # Conjunto original: {1, 2, 3, 4, 5}
print("Copia del conjunto:", copia_set)      # Copia del conjunto: {1, 2, 3, 4, 5, 6}

En este ejemplo, copia_set es una copia del conjunto original_set. Cuando se agrega el elemento 6 a copia_set, el conjunto original no se ve afectado.


Copia de un conjunto con elementos mutables

# Crear un conjunto con una lista como elemento (esto generará un error)
conjunto_con_lista = {1, [2, 3], 4}

# Intentar copiar el conjunto (esto también generará un error)
copia_conjunto = conjunto_con_lista.copy()

# Esto generará un error porque las listas son elementos mutables

En este caso, obtendrás un error porque los elementos dentro del conjunto ([2, 3]) son mutables (una lista). copy() solo crea una copia superficial, por lo que no puede copiar elementos mutables como listas o diccionarios.


Copia de un conjunto de conjuntos (nested sets)

# Crear un conjunto de conjuntos
conjunto_de_conjuntos = {frozenset({1, 2}), frozenset({3, 4})}

# Copiar el conjunto de conjuntos
copia_conjunto_de_conjuntos = conjunto_de_conjuntos.copy()

# Agregar un nuevo conjunto a la copia
copia_conjunto_de_conjuntos.add(frozenset({5, 6}))

# Verificar que el conjunto original no se ve afectado
print("Conjunto de conjuntos original:", conjunto_de_conjuntos)
# Conjunto de conjuntos original: {frozenset({1, 2}), frozenset({3, 4})}
print("Copia del conjunto de conjuntos:", copia_conjunto_de_conjuntos)
# Copia del conjunto de conjuntos: {frozenset({1, 2}), frozenset({3, 4}), frozenset({5, 6})}

En este ejemplo, estamos copiando un conjunto que contiene conjuntos inmutables (frozenset). La copia se realiza correctamente, y podemos agregar un nuevo conjunto a la copia sin afectar al conjunto original.

La función copy() es útil cuando deseas trabajar con una copia independiente de un conjunto sin modificar el original. Sin embargo, ten en cuenta que esta es una copia superficial, por lo que si el conjunto contiene elementos mutables, esos elementos aún serán los mismos en ambas copias. En ese caso, deberías considerar técnicas más avanzadas como la copia profunda (deep copy) si necesitas independencia completa entre los conjuntos.