web-dev-qa-db-fra.com

Initialiser une liste à une longueur spécifique dans Python

Comment initialiser une liste avec 10 fois une valeur par défaut en Python?

Je cherche un moyen esthétique d’initialiser une liste vide avec une plage spécifique. Alors faites une liste qui contient 10 zéros ou quelque chose pour être sûr que ma liste a une longueur spécifique.

220
Janusz

Si la "valeur par défaut" souhaitée est immuable, la suggestion de @ eduffy, par exemple [0]*10, est suffisant.

Mais si vous voulez, disons, une liste de dix dicts, ne ( pas utilisez [{}]*10 - cela vous donnerait une liste avec le identique initialement vide dict dix fois, pas dix distincts. Utilisez plutôt [{} for i in range(10)] ou des constructions similaires pour construire dix dicts distinctes afin de constituer votre liste.

342
Alex Martelli

la multiplication de liste fonctionne.

>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
162
eduffy

Dans une discussion sur les composants internes des conteneurs de base dans Python lors de la PyCon 2012, Raymond Hettinger suggère d'utiliser [None] * n pour pré-allouer la longueur souhaitée.

Diapositives disponibles au format PPT ou via Google

L'ensemble du diaporama est assez intéressant. Le la présentation est disponible sur YouTube , mais cela n’ajoute pas grand chose aux diapositives.

46
Pejvan