web-dev-qa-db-fra.com

Initialiser la liste avec la même valeur booléenne

Est-il possible sans boucles d'initialiser toutes les valeurs de liste à un booléen? Par exemple, je veux avoir une liste de N éléments tous faux.

44
Alecs

Vous pouvez le faire comme ceci: -

>>> [False] * 10
[False, False, False, False, False, False, False, False, False, False]

REMARQUE: - Notez que vous ne devriez jamais faire cela avec un list de mutable types avec la même valeur, sinon vous verrez un comportement surprenant comme celui de l'exemple ci-dessous: -

>>> my_list = [[10]] * 3
>>> my_list
[[10], [10], [10]]
>>> my_list[0][0] = 5
>>> my_list
[[5], [5], [5]]

Comme vous pouvez le voir, les modifications que vous avez apportées dans une liste interne se reflètent dans chacune d'elles.

102
Rohit Jain
    my_list = [False for i in range(n)]

Cela vous permettra de modifier des éléments individuels car il construit chaque élément indépendamment.

Bien que cela soit techniquement soit une boucle.

13
Noah

Lorsque l'espace compte, bytearray est un meilleur choix. C'est environ cinq fois plus d'espace efficace que la liste des solutions booléennes.

Cela crée un tableau de valeurs N, initialisées à zéro:

B = bytearray(N)
5
Waylon Flinn