Insérer une chaîne dans une liste sans se diviser en caractères


113

Je suis nouveau sur Python et je ne peux pas trouver un moyen d'insérer une chaîne dans une liste sans qu'elle soit divisée en caractères individuels:

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

Que dois-je faire pour avoir:

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

J'ai cherché dans les documents et sur le Web, mais ce n'est pas ma journée.

Réponses:


147

Pour ajouter à la fin de la liste:

list.append('foo')

A insérer au début:

list.insert(0, 'foo')

Je suis sûr que la plupart des gens le savent, mais juste pour ajouter: faire list2 = list1.append('foo')ou list2 = list1.insert(0, 'foo') entraînera la list2valeur None. Les deux appendet insertsont des méthodes qui modifient la liste sur laquelle elles sont utilisées plutôt que de renvoyer une nouvelle liste.
MoltenMuffins


15

Une autre option utilise le surchargé + operator:

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

1
Vous venez de voir que vous pouvez également l'utiliser pour ajouter à la fin: l += ['foo']
Toni Homedes i Saun

6

mieux vaut mettre des crochets autour de foo et utiliser + =

list+=['foo']

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

4

N'utilisez pas la liste comme nom de variable. C'est un élément intégré que vous masquez.

Pour insérer, utilisez la fonction d'insertion de listes.

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

Ce n'est pas tout à fait correct. insert()prend un deuxième argument.
Rafe Kettler

@RafeKettler Oups, append est celui sans argument de lieu.
Spencer Rathbun


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

ou (utilisez la insertfonction où vous pouvez utiliser la position d'index dans la liste)

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.