web-dev-qa-db-fra.com

Python: Ajouter un élément à la liste N fois

Cela ressemble à quelque chose que Python aurait un raccourci pour. Je souhaite ajouter un élément à une liste N fois, en procédant ainsi:

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?

58
Toji

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 voudrez peut-être modifier ultérieurement (telles que des sous-listes ou des dict):

l = [{} for x in range(100)]

(La raison pour laquelle la première méthode est seulement une bonne idée pour les valeurs constantes, comme les ints ou les chaînes, est que seule la copie superficielle est utilisée lorsque la syntaxe <list>*<number> est utilisée. Ainsi, si vous utilisiez quelque chose comme [{}]*100, vous obtiendriez 100 références au même dictionnaire - changer si l’un d’eux changerait tout le monde. Comme les ints et les chaînes de caractères sont immuables, cela ne leur pose aucun problème.)

Si vous souhaitez ajouter des éléments à une liste existante, vous pouvez utiliser la méthode extend() de cette liste (en association avec la génération d'une liste d'éléments à 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]
85
Amber

Utilisez extend pour ajouter une liste de compréhension à la fin.

l.extend([x for i in range(100)])

Voir le docs Python pour plus d'informations.

17
Jake

La répétition d'Itertools combinée avec l'extension de liste.

from itertools import repeat
l = []
l.extend(repeat(x, 100))
4
kevpie

Vous pouvez le faire avec une compréhension de liste

l = [x for i in range(10)];
3
Mark Elliot

Je devais emprunter un autre chemin pour une mission, mais c’est ce avec quoi je me suis retrouvé.

my_array += ([x] * repeated_times)
1
CTS_AE