Pour les types de données immuables :
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
Pour les valeurs qui sont stockées par référence et que vous pouvez souhaiter modifier ultérieurement (comme les sous-listes ou les dicts) :
l = [{} for x in range(100)]
(La raison pour laquelle la première méthode n'est une bonne idée que pour les valeurs constantes, comme les ints ou les chaînes de caractères, est que seule une copie superficielle est effectuée lors de l'utilisation de la balise <list>*<number>
syntaxe, et donc si vous avez fait quelque chose comme [{}]*100
vous vous retrouveriez avec 100 références au même dictionnaire, et la modification de l'une d'entre elles les modifierait toutes. Comme les ints et les chaînes de caractères sont immuables, ce n'est pas un problème pour eux).
Si vous souhaitez ajouter des éléments à une liste existante, vous pouvez utiliser la commande extend()
de cette liste (en conjonction avec la génération d'une liste de choses à ajouter via les techniques ci-dessus) :
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
12 votes
J'ai fini par choisir
l.extend([x] * 100)
car il correspondait le mieux à ma situation. C'est à Amber que revient le mérite de la réponse la plus complète. Merci !6 votes
Assurez-vous de bien comprendre la sémantique de référence de Python avant de l'utiliser pour quelque chose de non trivial. Les x ajoutés à l sont tous le même x, donc la mutation de l'un d'entre eux les affecte tous (tous les un, référencés 100 fois).
1 votes
Pour une clarification : Je l'utilise pour les entiers, donc mon utilisation est sûre.