En Python, la sintaxis de rest tiene un compañero llamado spread 🤝 Aunque tienen una sintaxis similar, realizan tareas opuestas. Mientras que rest agrupa los elementos, spread los extiende. Esto es especialmente útil cuando queremos copiar o unir listas.
Por ejemplo, si necesitamos definir una lista y añadirle elementos de otra lista, podemos usar spread para hacerlo de manera eficiente. Esto es algo que frecuentemente hacemos al trabajar con valores predeterminados.
# Listas iniciales
french_cities = ['paris', 'marseille']
cities = ['milan', 'rome', *french_cities]
print(cities) # => ['milan', 'rome', 'paris', 'marseille']
En este caso, * es un spread. Extendió la lista añadiendo todos sus elementos a la nueva lista. La diferencia con rest radica en el contexto de uso.
El Rest se emplea a la izquierda del signo igual, en el proceso de desestructuración, mientras que el spread se utiliza a la derecha del signo igual, al formar la lista.
A diferencia del rest, el spread puede ubicarse en cualquier parte de la lista. Por ejemplo, no solo podemos ampliar la lista inicial hacia la derecha, sino también hacia la izquierda:
# Listas iniciales
french_cities = ['paris', 'marseille']
cities = [*french_cities, 'milan', 'rome']
print(cities) # => ['paris', 'marseille', 'milan', 'rome']
E incluso en medio. Sin spread, un código similar no se puede expresar con una sola operación:
french_cities = ['paris', 'marseille']
cities = ['milan', *french_cities, 'rome']
print(cities) # => ['milan', 'paris', 'marseille', 'rome']
El operador spread funciona con cualquier número de listas:
# Listas iniciales
french_cities = ['paris', 'marseille']
italian_cities = ['rome', 'milan']
# Creamos una unión de listas usando +
cities = [*french_cities, *italian_cities]
print(cities) # ['paris', 'marseille', 'rome', 'milan']
Copiar una lista
El operador spread se utiliza con frecuencia para copiar una lista. La copia previene la modificación de la lista original cuando es necesario cambiar su copia:
# Lista inicial
french_cities = ['paris', 'marseille']
# Creamos una copia de la lista. También puedes utilizar .copy()
copy = [*french_cities]
copy.append('lyon')
print(copy) # => ['paris', 'marseille', 'lyon']
print(french_cities) # => ['paris', 'marseille']
Conclusiones
El operador spread * permite agregar facilmente elementos de una o varias listas a una nueva lista. Gracias a este operador, puedes incluir elementos de una lista en cualquier lugar de la nueva lista, ya sea al comienzo, en medio o al final.
Usar el operador spread para unir varias listas simplifica este proceso, haciéndolo más directo. En lugar de usar el método concat() o ciclos complicados, puedes simplemente aplicar el operador spread para obtener una sola lista que contenga todos los elementos de las listas originales. Esto es especialmente útil para fusionar datos o crear listas combinadas.
El operador spread puede ser usado para crear copias de listas. Esto previene la modificación de la lista original cuando se modifica su copia.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.