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.