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:
- Con los métodos
list
de Python - Con concatenación
- Con la notación slice
- 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
PythonAñ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]
PythonTen 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]]
PythonEl 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]
PythonTen 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']
PythonPara 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']
PythonUsa 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']
PythonTen 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']
PythonPara 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']
PythonAñ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']
PythonEn 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)
PythonSi 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']
PythonEl 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']
PythonEl 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']
PythonUso 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)
PythonAdemás, existe una notación “shorthand” para crear objetos slice junto con el operador de índice []
:
# Select items of list
lst[start:stop:step]
PythonSe 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']
PythonEn 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']
PythonCon 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']
PythonAdemá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:
- Crear una lista vacía
- Crear elementos mediante bucle
- 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]
PythonSin 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]
PythonPor 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.
Con Deploy Now de IONOS puedes implementar páginas web y aplicaciones a través de GitHub.