Comment puis-je créer une liste
qui ne contient que des zéros ? Je veux pouvoir créer une liste de zéros pour chaque int
dans range(10)
Par exemple, si l'int
dans la plage était 4
je vais obtenir :
[0,0,0,0]
et pour 7
:
[0,0,0,0,0,0,0]
Comment puis-je créer une liste
qui ne contient que des zéros ? Je veux pouvoir créer une liste de zéros pour chaque int
dans range(10)
Par exemple, si l'int
dans la plage était 4
je vais obtenir :
[0,0,0,0]
et pour 7
:
[0,0,0,0,0,0,0]
#ajoutez du code ici pour déterminer le nombre de zéros dont vous avez besoin, en nommant la variable n.
listofzeros = [0] * n
si vous préférez le mettre dans la fonction, il suffit de copier ce code et d'ajouter return listofzeros
Ce qui ressemblerait à ceci :
def zerolistmaker(n):
listofzeros = [0] * n
return listofzeros
output d'exemple :
>>> zerolistmaker(4)
[0, 0, 0, 0]
>>> zerolistmaker(5)
[0, 0, 0, 0, 0]
>>> zerolistmaker(15)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>>
$python 2.7.8
from timeit import timeit
import numpy
timeit("list(0 for i in xrange(0, 100000))", number=1000)
> 8.173301935195923
timeit("[0 for i in xrange(0, 100000)]", number=1000)
> 4.881675958633423
timeit("[0] * 100000", number=1000)
> 0.6624710559844971
timeit('list(itertools.repeat(0, 100000))', 'import itertools', number=1000)
> 1.0820629596710205
Vous devriez utiliser [0] * n
pour générer une liste avec n
zéros.
Voir pourquoi [] est plus rapide que list()
Cependant, il y a un piège, à la fois itertools.repeat
et [0] * n
créeront des listes dont les éléments font référence au même id
. Ce n'est pas un problème avec des objets immuables comme les entiers ou les chaînes de caractères, mais si vous essayez de créer une liste d'objets mutables comme une liste de listes ([[]] * n
), alors tous les éléments feront référence au même objet.
a = [[]] * 10
a[0].append(1)
a
> [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
[0] * n
créera la liste immédiatement tandis que repeat
peut être utilisé pour créer la liste de manière paresseuse lorsqu'elle est accédée pour la première fois.
Si vous traitez une quantité vraiment importante de données et que votre problème n'a pas besoin d'une longueur de liste variable ou de plusieurs types de données dans la liste, il est préférable d'utiliser des tableaux numpy
.
timeit('numpy.zeros(100000, numpy.int)', 'import numpy', number=1000)
> 0.057849884033203125
Les tableaux numpy
consommeront également moins de mémoire.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.