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.
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.
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.
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)