¡Hola! Si deseas aprender a trabajar con .append() y .extend() y entender sus diferencias, este artículo es para ti. Ambos son métodos muy poderosos que seguramente usarás en tus proyectos para trabajar con listas.

En este artículo, aprenderás:

  • Cómo y cuándo usar el método .append().
  • Cómo y cuándo usar el método .extend().
  • Sus principales diferencias.

Comencemos. ✨

🔸 El Método Append

Primero, veamos cómo funciona el método .append() en Python.

Cuándo Usarlo

Deberías usar este método cuando quieres agregar un elemento al final de una lista.

💡 Dato: Puedes agregar elementos de cualquier tipo de dato porque las listas pueden contener elementos de distintos tipos de datos.

image-2

Sintaxis y Argumentos

Para llamar al método .append(), debes usar esta sintaxis:

image-9

De izquierda a derecha:

  • La lista que será modificada. Normalmente es una variable que contiene la lista.
  • Un punto seguido por el nombre del método append().
  • Entre paréntesis, el elemento que será agregado al final de la lista.

💡 Dato: El punto es muy importante. Esta notación se denomina "notación de punto". El punto básicamente dice "llama a este método para esta lista en particular" y el efecto del método será aplicado a la lista que especificamos antes del punto.

Ejemplos

Aquí tenemos un ejemplo de cómo puedes usar .append():

# Definir la lista.
>>> numeros = [1, 2, 3, 4]

# Agregar el número 5 al final de la lista.
>>> numeros.append(5)

# Verificar el valor actualizado de la lista.
>>> numeros
[1, 2, 3, 4, 5]

💡 Dato: Cuando llamas al método .append(), la lista original es modificada. El método no crea una copia de la lista sino que muta la lista original en memoria.

Imaginemos que estamos realizando una investigación y queremos analizar datos recolectados usando Python. Debemos agregar nuevos valores a la lista existente.

¿Cómo lo podemos hacer? ¡Usando el método .append()!

A continuación puedes ver un ejemplo:

# Lista inicial de valores
>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]

# Agregar el número decimal al final de la lista existente.
>>> numeros.append(7.34)

# Verificar el valor actualizado de la lista.
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 7.34]

.append() es equivalente a...

Si estás familiarizado con el rebanado de cadenas de caracteres, listas, o tuplas, el proceso que realiza .append() es equivalente a:

a[len(a):] = [x]

Siendo a una lista y x el elemento que se va a agregar.

Con este ejemplo puedes ver que son equivalentes:

Usando .append():

>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]
>>> numeros.append(4.52)
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 4.52]

Usando rebanado de listas:

>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]
>>> numeros[len(numeros):] = [4.52]
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 4.52]

Agregar una Secuencia

Ahora, ¿que opinas sobre este ejemplo? ¿Cuál piensas que será el resultado? ¿Crees que se agregarán uno a uno los elementos de la lista que pasamos como argumento?

>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]
>>> numeros.append([5.67, 7.67, 3.44])
>>> numeros
# RESULTADO?

¿Estás listo? Este será el resultado:

[5.6, 7.44, 6.75, 4.56, 2.3, [5.67, 7.67, 3.44]]

Quizás estés preguntándote por qué la lista completa fue agregada como un solo elemento.

Esto ocurre porque el método .append() agrega el elemento completo al final de la lista. Si el elemento es una secuencia como una lista, una tupla o un diccionario, la secuencia completa será añadida como un elemento de la lista.

A continuación tenemos otro ejemplo. En este caso, la secuencia es una tupla y se agrega completa como un elemento de la lista:

>>> nombres = ["Lulu", "Nora", "Gino", "Bryan"]
>>> nombres.append(("Emily", "John"))
>>> nombres
['Lulu', 'Nora', 'Gino', 'Bryan', ('Emily', 'John')]

🔹 El Método Extend

Ahora que ya sabes cómo trabajar con .append(), veamos cómo funciona el método .extend() en Python.

Cómo Usarlo

Deberías usar este método si necesitas agregar varios elementos a una lista como elementos individuales a partir de una secuencia.

Permíteme ilustrar la importancia de éste método con una herramienta muy útil que acabas de aprender: el método .append(). Vamos a comparar el efecto de ambos métodos.

En base a lo que has aprendido hasta ahora, si quisiéramos agregar varios elementos individuales a una lista llamando a .append(), necesitaríamos llamarlo una vez por cada elemento que queremos agregar, de esta forma:

# Lista que queremos modificar.
>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]

# Agregar los elementos.
>>> numeros.append(2.3)
>>> numeros.append(9.6)
>>> numeros.append(4.564)
>>> numeros.append(7.56)

# Lista actualizada.
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

Luego de ver este ejemplo, estoy segura de que probablemente estés pensando que esto no es muy eficiente. ¿Qué haríamos si necesitáramos agregar miles o millones de elementos? No podemos escribir miles o millones de líneas para una tarea tan sencilla.

Veamos una alternativa. Podemos guardar los valores que queremos agregar en otra lista y luego usar un ciclo for para llamar a .append() tantas veces como sea necesario:

# Lista que queremos modificar.
>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]

# Valores que queremos agregar.
>>> valores_nuevos = [2.3, 9.6, 4.564, 7.56]

# Ciclo for para agregar los valores a la lista.
>>> for num in valores_nuevos:
	numeros.append(num)

# Valor actualizado de la lista.
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

Esto es más eficiente porque solo estamos escribiendo unas cuantas líneas de código.

Pero hay una forma incluso más eficiente, fácil de leer, y compacta de realizar la misma tarea: ¡.extend()! Aquí podemos ver un ejemplo:

>>> numeros = [5.6, 7.44, 6.75, 4.56, 2.3]
>>> valores_nuevos = [2.3, 9.6, 4.564, 7.56]

# ¡Aquí es donde ocurre la magia! Ya no necesitamos un ciclo for.
>>> numeros.extend(valores_nuevos)

# La lista fue actualizada con los valores individuales.
>>> numeros
[5.6, 7.44, 6.75, 4.56, 2.3, 2.3, 9.6, 4.564, 7.56]

Veamos en más detalle cómo funciona este método.

Sintaxis y Argumentos

Para llamar al método .extend(), debes usar esta sintaxis:

image-8

De derecha a izquierda:

  • La lista que será modificada. Normalmente es una variable que contiene la lista.
  • Un punto . (hasta ahora, todo es exactamente igual al método .append()).
  • El nombre del método .extend(). (Ahora sí comenzamos a ver el cambio...).
  • Entre los paréntesis pasamos un argumento: el iterable (lista, tupla, diccionario, conjunto, o cadena de caracteres) que contiene los elementos que serán agregados como elementos individuales de la lista.

💡 Dato: la Documentación de Python define un iterable como "un objeto capaz de retornar sus miembros uno por vez." Los objetos iterables pueden ser usados en un ciclo for y, debido a que retornan sus elementos uno a uno, podemos usarlos en su iteración correspondiente.  

Detrás de Escenas

Veamos cómo funciona el método .extend() detrás de escenas. Aquí tenemos un ejemplo:

# Lista que será modificada
>>> a = [1, 2, 3, 4]

# Secuencia de valores que queremos agregar a la lista a
>>> b = [5, 6, 7]

# Llamar al método .extend()
>>> a.extend(b)

# Veamos la lista actualizada. Ahora la lista tiene los valores 5, 6, y 7.
>>> a
[1, 2, 3, 4, 5, 6, 7]

Como puedes ver en el ejemplo, con el método .extend() puedes agregar los elementos de un iterable al final de una lista en el orden en el que aparecen.

Veamos qué sucede en más detalle con un diagrama.

  • Tenemos una lista a = [1, 2, 3, 4].
  • También tenemos la lista b = [5, 6, 7], la cual contiene la secuencia de valores que queremos agregar.
  • El método .extend() toma cada elemento de b y lo agrega a la lista a en el mismo orden.
image-5
Paso 1. El primer elemento se agrega al final de la lista.
image-6
Paso 2. El segundo elemento se agrega al final de la lista.
image-7
Paso 3. El tercer elemento se agrega al final de la lista.

Después de completar este proceso, tenemos la lista a actualizada y podemos trabajar con los elementos de a.

image-109
Lista a luego del proceso.

💡 Dato: la lista b que se usa para "extender" a la lista a permanece intacta luego del proceso y puedes trabajar con ella luego de llamar a .extend(). Confirmémoslo con el siguiente ejemplo:

>>> a = [1, 2, 3, 4]
>>> b = [5, 6, 7]

>>> a.extend(b)

>>> a
[1, 2, 3, 4, 5, 6, 7]

# ¡La lista b no cambió!
>>> b
[5, 6, 7]

Ejemplos

Ya sabes cómo funciona .extend(). Ahora veamos algunos ejemplos en los cuales vamos a pasar distintos tipos de iterables como argumento:

Para tuplas:
El proceso funciona exactamente igual si pasamos una tupla. Los elementos individuales de la tupla son agregados uno a uno en el orden que aparecen:

# La lista que vamos a modificar.
>>> a = [1, 2, 3, 4]

# Los valores que serán agregados (¡el iterable es una tupla!)
>>> b = (1, 2, 3, 4)

# Llamamos al método
>>> a.extend(b)

# La lista a fue actualizada.
>>> a
[1, 2, 3, 4, 1, 2, 3, 4]

Para sets:
Lo mismo ocurre si pasamos un set (conjunto). Los elementos del set se agregan uno a uno:

# Lista que vamos a modificar
>>> a = [1, 2, 3, 4]

# Los valores que serán agregados (¡el iterable es un set (conjunto)!)
>>> c = {5, 6, 7}

# Llamamos al método
>>> a.extend(c)

# La lista a fue actualizada
>>> a
[1, 2, 3, 4, 5, 6, 7]

Para cadenas de caracteres:
El método .extend() agrega cada uno de los caracteres de una cadenas de caracteres a la lista en el orden en el que aparecen. Cada carácter se considera como un "elemento":

# Lista que vamos a modificar.
>>> a = ["a", "b", "c"]

# Cadena de caracteres que será usada para extender la lista.
>>> b = "¡Hola, Mundo!"

# Llamamos al método
>>> a.extend(b)

# La lista a fue actualizada
>>> a
['a', 'b', 'c', '¡', 'H', 'o', 'l', 'a', ',', ' ', 'M', 'u', 'n', 'd', 'o', '!']

Para diccionarios:
Los diccionarios tienen un comportamiento muy particular cuando los pasamos como argumento al método .extend(). En este caso, las claves del diccionario se agregan una a una a la lista. Los valores que corresponden a los pares clave-valor no se agregan.

En el siguiente ejemplo, las claves son "d", "e", y "f". Estos valores son agregados al final de la lista a:

# La lista que vamos a modificar.
>>> a = ["a", "b", "c"]

# El diccionario que será usado para extender la lista a.
>>> b = {"d": 5, "e": 6, "f": 7}

# Llamar al método.
>>> a.extend(b)

# La lista a fue actualizada
>>> a
['a', 'b', 'c', 'd', 'e', 'f']

.extend() es equivalente a...

Lo que el método .extend() hace detrás de escenas es equivalente a a[len(a):] = iterable. A continuación tenemos un ejemplo para demostrarlo:

Usando .extend():

# La lista que será modificada.
>>> a = [1, 2, 3, 4]

# Valores que será agregados.
>>> b = (6, 7, 8)

# Llamamos al método.
>>> a.extend(b)

# La lista a fue actualizada.
>>> a
[1, 2, 3, 4, 6, 7, 8]

Usando rebanado de listas:

# Lista que será modificada
>>> a = [1, 2, 3, 4]

# Valores que serán agregados
>>> b = (6, 7, 8)

# Asignación. Asignar el iterable b como la parte final de la lista a.
>>> a[len(a):] = b

# La lista a fue actualizada.
>>> a
[1, 2, 3, 4, 6, 7, 8]

El resultado es el mismo, pero se recomienda usar .extend() porque es mucho más fácil de leer y mucho más compacto. Python ofrece herramientas increíbles como este método para mejorar nuestro proceso de trabajo.

🔸 Resumen de sus Diferencias

Ahora que sabes cómo trabajar con .append() y .extend(), veamos un resumen de sus diferencias principales:

  • Efecto: .append() agrega un elemento al final de la lista mientras que .extend() puede agregar varios elementos de una secuencia al final de la lista.
  • Argumento: .append() toma un solo elemento como argumento mientras que .extend() toma un iterable como argumento (por ejemplo: listas, tuplas, diccionarios, sets, y cadenas de caracteres).

Espero que te haya gusta mi artículo y que te haya sido de utilidad. Ahora puedes trabajar con los métodos .append() y .extend() en Python. Te invito a seguirme en Twitter @EstefaniaCassN