Une liste d'éléments:

mylist = [3,7,8,9,2,4,6]

Je voulais juste changer toute sa valeur en vrai

mylist = [True,True,True,True,True,True,True]

Je peux le faire avec pour la boucle.

Voulait faire de manière pythonique de préférence un paquebot

1
pylist 13 avril 2018 à 08:06

4 réponses

Meilleure réponse

Vous pouvez utiliser lambda avec la fonction map

In [11]: mylist = [3,7,8,9,2,4,6]
#python 2.7
In [12]: mylist = map(lambda x: True,mylist)
#python 3.x
In [12]: mylist = list(map(lambda x: True,mylist))
In [13]: mylist
Out[13]: [True, True, True, True, True, True, True]
2
Roushan 13 avril 2018 à 05:20

Cela devrait le faire pour vous:

>>> mylist = [True] * len(mylist)

Explication: Initialiser la liste avec la valeur par défaut = True et la même taille que la liste existante.

2
Gautam 13 avril 2018 à 05:12
mylist = [True for _ in mylist]
7
kingkupps 13 avril 2018 à 05:10

Il y a plusieurs façons de le faire (de cette façon, nous sommes plus en Perl-land qu'en Python):

# List duplication
mylist = [True] * len(mylist)

# Comprehensions
mylist = [True for x in mylist]

# Fill with itertools
from itertools import repeat
mylist = repeat(True, len(mylist) - 1)

Tous ces remplacent la liste donnée liée à mylist par une nouvelle liste. Si vous souhaitez muter la liste vers laquelle mylist pointe en place, vous pouvez utiliser l'affectation d'indexation:

# Assignment (mutates existing list)
mylist[:] = [True] * len(mylist)
5
Sean Vieira 13 avril 2018 à 05:21