130 votes

Insertion d'une chaîne dans une liste sans qu'elle soit découpée en caractères

Je suis nouveau dans Python et je n'arrive pas à trouver un moyen d'insérer une chaîne dans une liste sans qu'elle soit découpé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 mon jour.

163voto

Rafe Kettler Points 29389

Pour ajouter à la fin de la liste :

list.append('foo')

A insérer au début :

list.insert(0, 'foo')

4 votes

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') aura pour résultat list2 ayant une valeur de None. Les deux sites append y insert sont des méthodes qui mutent la liste sur laquelle elles sont utilisées plutôt que de retourner une nouvelle liste.

23voto

Iacks Points 1220

En restant dans la méthode que vous utilisez pour l'insérer, utilisez

list[:0] = ['foo']

http://docs.python.org/release/2.6.6/library/stdtypes.html#mutable-sequence-types

0 votes

Cette insertion par assignation de tranche est plus rapide que list.insert() de Raffe Kettler. Voir Ajouter une colonne à un tableau à 2 dimensions . Non pas que cela ait de l'importance.

16voto

juliomalegria Points 6281

Une autre option consiste à utiliser la fonction surchargée + operator :

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

1 votes

Je viens de voir que vous pouvez aussi l'utiliser pour ajouter des éléments à la fin : l += ['foo']

10voto

Rik Points 513

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

list+=['foo']

5voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X