pas un grand fan de celui-ci, mais vous pouvez essayer cela (même si je pense que tous les ci-dessus sont beaucoup plus concis et facile à lire):
In [22]: from operator import setitem
In [23]: mylist = [0, 0, 0, 0, 0]
In [24]: indeces_to_replace = [0, 1, 3]
In [25]: _ = map(lambda x: setitem(mylist, x, 100), indeces_to_replace)
In [26]: mylist
Out[26]: [100, 100, 0, 100, 0]
Mis à part la lisibilité douteuse et la nécessité d'une importation, @abarnert a souligné quelques questions supplémentaires, à savoir que 012.369.crée toujours une liste inutile (qui est rejetée avec le _
mais créé néanmoins) et que cela ne fonctionnera pas dans Python 3 car map
returns an iterator dans Python 3.x. Vous pouvez utiliser le module six pour simuler le comportement de map
dans Python 3.x à partir de Python 2.x, et en combinaison avec collections.deque
(encore une fois comme suggéré par @abarnert), vous pouvez obtenir la même sortie sans créer la liste supplémentaire en mémoire car un deque
pouvant contenir un maximum de 0
éléments rejettera tout ce qu'il reçoit de l'itérateur map
(notez qu'avec six
, map
est simulé en utilisant itertools.imap
).
Encore une fois, il n'y a absolument pas besoin d'utiliser ce jamais - toutes les solutions ci-dessus/dessous est mieux :)
In [1]: from collections import deque
In [2]: from six.moves import map
In [3]: from operator import setitem
In [4]: mylist = [0, 0, 0, 0, 0]
In [5]: indeces_to_replace = [0, 1, 3]
In [6]: deque(map(lambda x: setitem(mylist, x, 100), indeces_to_replace), maxlen=0)
Out[6]: deque([], maxlen=0)
In [7]: mylist
Out[7]: [100, 100, 0, 100, 0]
Comment cela? mylist [: 2], mylist [3] = [A] * 2, A –