Insertar una cadena en una lista sin dividirse en caracteres


113

Soy nuevo en Python y no puedo encontrar una manera de insertar una cadena en una lista sin que se divida en caracteres individuales:

>>> list=['hello','world']
>>> list
['hello', 'world']
>>> list[:0]='foo'
>>> list
['f', 'o', 'o', 'hello', 'world']

¿Qué debo hacer para tener:

['foo', 'hello', 'world']

Busqué en la documentación y en la Web, pero no ha sido mi día.

Respuestas:


147

Para agregar al final de la lista:

list.append('foo')

Para insertar al principio:

list.insert(0, 'foo')

Estoy seguro de que la mayoría de la gente sabe esto, pero solo para agregar: hacer list2 = list1.append('foo')o list2 = list1.insert(0, 'foo') resultará en list2tener un valor de Ninguno. Ambos appendy insertson métodos que mutan la lista en la que se utilizan en lugar de devolver una nueva lista.
— MoltenMuffins


15

Otra opción es usar el sobrecargado + operator:

>>> l = ['hello','world']
>>> l = ['foo'] + l
>>> l
['foo', 'hello', 'world']

1
Recién visto, también puede usarlo para agregar al final: l += ['foo']
— Toni Homedes i Saun

6

mejor poner paréntesis alrededor de foo, y usar + =

list+=['foo']

5
>>> li = ['aaa', 'bbb']
>>> li.insert(0, 'wow!')
>>> li
['wow!', 'aaa', 'bbb']

4

No use list como nombre de variable. Es una función que estás enmascarando.

Para insertar, use la función insertar de listas.

l = ['hello','world']
l.insert(0, 'foo')
print l
['foo', 'hello', 'world']

Esto no es del todo correcto. insert()toma un segundo argumento.
— Rafe Kettler

@RafeKettler Vaya, append es el que no tiene un argumento de lugar.
— Spencer Rathbun


0
ls=['hello','world']
ls.append('python')
['hello', 'world', 'python']

o (use la insertfunción donde puede usar la posición del índice en la lista)

ls.insert(0,'python')
print(ls)
['python', 'hello', 'world']

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.