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.

Dheeraj Vepakomma
fuente

Respuestas:

147

Para agregar al final de la lista:

list.append('foo')

Para insertar al principio:

list.insert(0, 'foo')
Rafe Kettler
fuente
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']
juliomalegria
fuente
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']
Rik
fuente
5
>>> li = ['aaa', 'bbb']
>>> li.insert(0, 'wow!')
>>> li
['wow!', 'aaa', 'bbb']
Mac
fuente
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']
Spencer Rathbun
fuente
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
2

Tienes que agregar otra lista:

list[:0]=['foo']
Algún tipo programador
fuente
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']
Abhishek Patil
fuente
-2

Sugiero agregar el operador '+' de la siguiente manera:

lista = lista + ['foo']

¡Espero eso ayude!

Antonio Moreno Martín
fuente