Cómo agregar múltiples valores a una lista en Python

Resuelto ChangeMyName asked hace 10 años • 6 respuestas

Estoy intentando descubrir cómo agregar varios valores a una lista en Python. Sé que existen algunos métodos para hacerlo, como ingresar los valores manualmente, poner la operación de agregar en un forbucle o las funciones appendy extend.

Sin embargo, me pregunto si hay una manera más clara de hacerlo. ¿Quizás un determinado paquete o función?

ChangeMyName avatar Nov 25 '13 21:11 ChangeMyName
Aceptado

Puede usar el método de secuencialist.extend para extender la lista con múltiples valores de cualquier tipo de iterable, ya sea otra lista o cualquier otra cosa que proporcione una secuencia de valores.

>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

Por lo tanto, puede utilizar list.append()para agregar un solo valor y list.extend()agregar varios valores.

poke avatar Nov 25 '2013 14:11 poke

Aparte de la appendfunción, si por "valores múltiples" te refieres a otra lista, simplemente puedes concatenarlos así.

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
slider avatar Nov 25 '2013 14:11 slider

Si echas un vistazo a los documentos oficiales , verás justo debajo append. extendEso es lo que buscas.

También existe itertools.chainla posibilidad de que esté más interesado en una iteración eficiente que en terminar con una estructura de datos completamente poblada.

Silas Ray avatar Nov 25 '2013 14:11 Silas Ray

Otra solución es descomprimir ambas listas dentro de una nueva lista y asignarla nuevamente a la copia de la lista original:

my_list[:] = [*my_list, *new_items]

Un ejemplo:

my_list = [1, 2]
new_items = [3, 4, 5]

my_list[:] = [*my_list, *new_items]
my_list                                # [1, 2, 3, 4, 5]

o asignar a una porción vacía como en la respuesta de Saumya Prasad (pero al final de la lista):

length = len(my_list)
my_list[length:length] = new_items
my_list                                # [1, 2, 3, 4, 5]

Vale la pena señalar que list.extendla asignación de un segmento a un segmento vacío modifica la lista en el lugar, mientras que itertools.chainel desempaquetado o +el operador crean una nueva lista.

cottontail avatar Feb 27 '2023 21:02 cottontail