425 votes

recherche et remplacement d’éléments dans une liste (python)

Je dois chercher dans une liste et remplacer toutes les occurrences d’un élément par un autre. Je sais que je dois d’abord trouver l’index de tous les éléments et puis de les remplacer, mais mes tentatives dans le code sont me mène nulle part. Toutes les suggestions ?

713voto

outis Points 39377

Essayez d’utiliser une compréhension de liste et l' opérateur ternaire.

318voto

ghostdog74 Points 86060
>>> a=[1,2,3,4,5,1,2,3,4,5,1]
>>> for n,i in enumerate(a):
...   if i==1:
...      a[n]=10
...
>>> a
[10, 2, 3, 4, 5, 10, 2, 3, 4, 5, 10]

42voto

damzam Points 843

Compréhension de liste œuvres bien--et en boucle à travers avec enumerate peut vous faire économiser quelques mémoire (b/c de l’opération essentiellement faire en place).

Il y a aussi fonctionnelle programmation... voir utilisation de la carte:

 >>> a = [1,2,3,2,3,4,3,5,6,6,5,4,5,4,3,4,3,2,1] >>> carte (lambda x : x si x ! = 4 'sss' autre chose, une) [1, 2, 3, 2, 3, « sss », 3, 5, 6, 6, 5, « sss », 5, « sss », 3, « sss », 3, 2, 1] 

12voto

gnibbler Points 103484
>>> a=[1,2,3,4,5,1,2,3,4,5,1]
>>> item_to_replace = 1
>>> replacement_value = 6
>>> indices_to_replace = [i for i,x in enumerate(a) if x==item_to_replace]
>>> indices_to_replace
[0, 5, 10]
>>> for i in indices_to_replace:
...     a[i] = replacement_value
... 
>>> a
[6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6]
>>> 

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