Cela semble être quelque chose pour lequel Python aurait un raccourci. Je souhaite ajouter un élément à une liste N fois, ce qui en fait:
l = []
x = 0
for i in range(100):
l.append(x)
Il me semble qu'il devrait y avoir une méthode "optimisée" pour cela, quelque chose comme:
l.append_multiple(x, 100)
Y a-t-il?
l.extend([x] * 100)
car cela correspondait le mieux à ma situation. Amber obtient le crédit de réponse pour être la plus complète. Merci!Réponses:
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 stockées par référence et que vous souhaiterez peut-être modifier ultérieurement (comme les sous-listes ou les dictionnaires):
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 entiers ou les chaînes, est que seule une copie superficielle est utilisée lors de l'utilisation de la
<list>*<number>
syntaxe, et donc si vous faisiez quelque chose comme[{}]*100
, vous vous retrouveriez avec 100 références dans le même dictionnaire - donc changer l'un d'entre eux les changerait tous. Puisque les entiers et les chaînes sont immuables, ce n'est pas un problème pour eux.)Si vous souhaitez ajouter à une liste existante, vous pouvez utiliser la
extend()
méthode 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]
la source
a.extend(b*n)
oùn
sont les heuresUtilisez extend pour ajouter une liste de compréhension à la fin.
l.extend([x for i in range(100)])
Consultez la documentation Python pour plus d'informations.
la source
J'ai dû emprunter une autre voie pour une mission, mais c'est ce avec quoi j'ai fini.
la source
Répéter Itertools combiné avec l'extension de liste.
from itertools import repeat l = [] l.extend(repeat(x, 100))
la source
Vous pouvez le faire avec une compréhension de liste
l = [x for i in range(10)];
la source
l = [] x = 0 l.extend([x]*100)
la source