Python add to list: añadir elementos a la lista Python

Las listas son estructuras de datos fundamentales en informática. Muchos algoritmos se basan en la modificación de listas. Te mostramos cómo añadir elementos a una lista de Python.

¿Cómo añadir elementos a una lista de Python?

A diferencia de las tuplas y las cadenas, las listas en Python son “mutables”, es decir, son estructuras de datos modificables. Podemos añadir elementos a una lista de Python, eliminarlos y cambiar su orden. Hay varias formas de hacerlo, cada una con distintas ventajas y desventajas.

Te presentamos cuatro enfoques que puedes utilizar en Python para añadir elementos a una lista:

  1. Con los métodos list de Python
  2. Con concatenación
  3. Con la notación slice
  4. Con list comprehension

Añadir elementos a una lista de Python con el método list

En Python, la clase list sirve de base para todas las operaciones con listas. La clase define una serie de métodos para objetos de lista. Se pueden encontrar tres métodos útiles para agregar elementos a una lista:

Método list Argumentos Explicación
append() element Añade un único elemento al final de la lista
extend() [elements] Añade múltiples elementos al final de la lista
insert() index, element Añade un único elemento antes del índice dado

Es importante entender que la modificación se realiza in situ para los tres métodos mencionados. Esto significa que el objeto de lista se modifica en lugar de crear y devolver una nueva lista. En consecuencia, todos los métodos devuelven None.

primes = [2, 3, 5, 7]
# Append additional prime number, saving returned result
should_be_none = primes.append(11)
# Show that the prime was added
assert primes == [2, 3, 5, 7, 11]
# Show that `None` was returned
assert should_be_none is None
Python

Añade un único elemento al final de la lista con append()

El método Python append() se puede utilizar para añadir un único elemento al final de una lista existente. Aquí puedes verlo con un ejemplo:

# List containing single prime number
primes = [2]
# Add an element to the end of the list
primes.append(3)
# Show that the element was added
assert primes == [2, 3]
Python

Ten cuidado al utilizar append(), ya que este método siempre añade un único elemento. Si el elemento a añadir es otra lista, el resultado será una lista anidada:

# List with two prime numbers
primes = [2, 3]
# Try to appends multiple numbers at once
primes.append([5, 7])
# Accidentally created a nested list
assert primes == [2, 3, [5, 7]]
Python

El intento de crear la lista [2, 3, 5, 7] ha fallado. Para añadir varios elementos, es mejor usar el método extend().

Añade elementos al final de la lista con extend()

El método Pythonextend() funciona de forma similar a append(), con la diferencia de que se añaden varios elementos a una lista existente. Aquí un ejemplo:

# List containing single prime number
primes = [2]
# Extend list by two elements
primes.extend([3, 5])
# Show that both element were added
assert primes == [2, 3, 5]
Python

Ten cuidado con extend(), ya que este método espera un iterable como argumento y desempaqueta sus elementos. Esto conduce a un comportamiento inesperado cuando se llama con un string:

# List of friends
friends = ['Mary', 'Jim']
# Try to extend by additional friend
friends.extend('Jack')
# String is unpacked into individual letters
assert friends == ['Mary', 'Jim', 'J', 'a', 'c', 'k']
Python

Para añadir un solo elemento a una lista de Python, o bien utiliza append()o encierra el elemento en una lista con corchetes. Entonces extend() también funcionará:

# List of friends
friends = ['Mary', 'Jim']
# Extend by additional friend inside list
friends.extend(['Jack'])
# Show that it worked
assert friends == ['Mary', 'Jim', 'Jack']
Python

Usa insert() para añadir un único elemento antes del índice especificado

Hasta ahora has podido ver cómo añadir uno o más elementos al final de una lista Python. ¿Pero qué pasa si quieres insertar un elemento en cualquier posición? Exactamente para este caso, existe el método Python insert(). Este método toma un índice numérico además del elemento a insertar:

# List of friends
friends = ['Mary', 'Jim', 'Jack']
# Insert additional friend `"Molly"` before index `2`
friends.insert(2, 'Molly')
# Show that "Molly" was added
assert friends == ['Mary', 'Jim', 'Molly', 'Jack']
Python

Ten cuidado al intentar agregar varios elementos con insert(), ya que el método inserta exactamente un elemento, lo que puede resultar en una lista anidada inesperada:

# List of friends
friends = ['Mary', 'Jim']
# Try to insert multiple friends at once
friends.insert(1, ['Molly', 'Lucy'])
# Accidentally created a nested list
assert friends == ['Mary', ['Molly', 'Lucy'], 'Jim']
Python

Para insertar varios elementos correctamente dentro de una lista, utiliza un bucle for. Además, puedes utilizar la función reserved()para mantener el orden de los elementos insertados:

# List of friends
friends = ['Mary', 'Jim']
# Using `reversed()` keeps order of inserted elements
for friend in reversed(['Molly', 'Lucy']):
    friends.insert(1, friend)
# Show that it worked
assert friends == ['Mary', 'Molly', 'Lucy', 'Jim']
Python

Añadir elementos a una lista de Python con concatenación

Además de los métodos list presentados, existe otra posibilidad de añadir elementos a una lista Python con concatenación. Para ello se utiliza el operador +de Python. La concatenación de listas es similar al uso de extend(). Sin embargo, la concatenación crea una nueva lista en lugar de operar “in-place”.

Crea dos listas y añade la segunda a la primera. Como la operación devuelve una nueva lista, asigna el valor de retorno a una nueva lista:

# List of guys
guys = ['Jim', 'Jack']
# List of gals
gals = ['Molly', 'Mary']
# Concatenate both lists
folks = guys + gals
# Show that it worked
assert folks == ['Jim', 'Jack', 'Molly', 'Mary']
Python

En este caso, el operador de concatenación llama al método __add__(). Por lo tanto, las expresiones guys + gals y guys.__add__(gals) son equivalentes:

# Show that both expressions return the same result
assert guys + gals == guys.__add__(gals)
Python

Si estás familiarizado con los Python operators, ya lo habrás adivinado. La concatenación de listas también es compatible con la asignación aumentada. Para ello, se utiliza el operador += para añadir elementos a una lista “in-place”:

# Shopping list
groceries = ['Milk', 'Bread', 'Eggs']
# Add butter
groceries += ['Butter']
# Show that it worked
assert groceries == ['Milk', 'Bread', 'Eggs', 'Butter']
Python

El operador += llama al método __iadd__(), donde la “i” significa “in-place”. De forma análoga al método extend(), el receptor del método se modifica directamente. Por lo tanto, las siguientes líneas son equivalentes:

  • groceries = groceries + ['Butter']
  • groceries += ['Butter']
  • groceries.__iadd__(['Butter'])
  • groceries.extend(['Butter'])

Ten cuidado cuando uses los operadores de concatenación de listas para añadir un único elemento a la lista. El elemento individual debe estar contenido en una lista, de lo contrario se puede descomprimir un iterable:

# List of cities
cities = ['London', 'Paris']
# Attempt to add city; likely not what you intended
cities += 'Rome'
# String is unpacked into individual letters
assert cities = ['London', 'Paris', 'R', 'o', 'm', 'e']
Python

El uso de una lista de un solo elemento conduce al efecto que probablemente busques de añadir otra ciudad a la lista:

# List of cities
cities = ['London', 'Paris']
# Create a single-element list
cities += ['Rome']
# Now the entire string is added
assert cities = ['London', 'Paris', 'Rome']
Python

Uso de la notación slice para añadir elementos a una lista en Python

Las slices son una función de Python para seleccionar elementos consecutivos de una lista. La sintaxis de las slices se corresponden con la conocida función range():

# The `slice()` function constructs a new `slice` object
slice(start, stop, step=1)
Python

Además, existe una notación “shorthand” para crear objetos slice junto con el operador de índice []:

# Select items of list
lst[start:stop:step]
Python

Se puede utilizar un objeto slice en lugar de un índice numérico para seleccionar varios elementos de una secuencia:

people = ['Jim', 'John', 'Mary', 'Jack']
# Select elements between index `1` (inclusive) and `3` (exclusive)
assert people[1:3] == ['John', 'Mary']
# Select every other element
assert people[::2] == ['Jim', 'Mary']
Python

En combinación con asignaciones, los slices pueden usarse como alternativa a los métodos list append(), extend() e insert():

Método list Asignación de slice correspondiente Explicación
lst.append(element) lst[len(lst)+1:] = [element] Añade un elemento al final de la lista
lst.extend([elements]) lst[len(lst)+1:] = [elements] Añade múltiples elementos al final de la lista
lst.insert(index, element) lst[index:index] = [element] Añade un elemento antes del índice dado

Para entender cómo funciona, observa primero cómo asignar un elemento de lista por índice numérico. En este caso, se sobrescribe un único elemento de la lista:

# List of groceries
groceries = ['Milk', 'Bread', 'Eggs']
# Overwrite element at index `1`
groceries[1] = 'Fruit'
# Show that it worked
assert groceries == ['Milk', 'Fruit', 'Eggs']
Python

¿Qué pasa si quieres insertar un elemento por asignación de índice? Usa un slice que contenga el índice deseado como valores start y stop. Para que la asignación de slice funcione, es obligatorio tener una lista a la derecha del signo igual:

# List of groceries
groceries = ['Milk', 'Bread', 'Eggs']
# Insert element before index `1`
groceries[1:1] = ['Fruit']
# Show that it worked
assert groceries == ['Milk', 'Fruit', 'Bread', 'Eggs']
Python

Con este truco puedes incluso insertar varios elementos a la vez en una lista Python. El método insert() no puede hacerlo:

# List of groceries
groceries = ['Milk', 'Bread', 'Eggs']
# Insert elements before index `1`
groceries[1:1] = ['Fruit', 'Butter']
# Show that it worked
assert groceries == ['Milk', 'Fruit', 'Butter', 'Bread', 'Eggs']
Python

Además, las asignaciones de slices pueden usarse para sobrescribir selectivamente elementos de una lista. En definitiva, las slices son una función muy flexible que debería estar en la caja de herramientas de todos los programadores de Python.

Añadir elementos Python a una lista con list comprehension

Un caso de uso común para añadir elementos a una lista en Python es poblar una nueva lista con elementos. El método estándar, que funciona en Python como en la mayoría de los lenguajes de programación, es el siguiente:

  1. Crear una lista vacía
  2. Crear elementos mediante bucle
  3. Ampliar la lista con el elemento creado

Como ejemplo, observa cómo generar la lista de los diez primeros números cuadrados:

# Empty list to be filled
squares = []
# Successively create numbers 0..9
for n in range(10):
    # Compute squared number
    squared = n * n
    # Append squared number to list
    squares.append(squared)
# Show that it worked
assert squares == [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Python

Sin embargo, hay un enfoque mejor en Python. Es el llamado list comprehension, que genera la lista sin un bucle for y una variable de lista vacía:

# Create first ten square numbers
squares = [n ** 2 for n in range(10)]
# Show that it worked
assert squares == [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Python

Por muy atractivo que sea, el list comprehension solo sirve para rellenar una lista nueva. Para ampliar una lista existente, se recurre a los métodos ya presentados.

Consejo

Con Deploy Now de IONOS puedes implementar páginas web y aplicaciones a través de GitHub.

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top