Tableau 2d de zéros
Il n'y a pas de type tableau en python, mais à s'en inspirer, nous pouvons utiliser des listes. Je veux avoir un tableau 2d-comme la structure rempli avec des zéros. Ma question est: quelle est la différence, le cas échéant, dans ces deux expressions:
zeros = [[0 for i in xrange(M)] for j in xrange(M)]
et
zeros = [[0]*M]*N
Sera zeros
être même? qui est le meilleur à utiliser par le biais de la vitesse et de la lisibilité?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
numpy.zeros
. Si ce n'est pas une option, vous souhaitez que la première version. Dans la deuxième version, si vous modifiez une valeur, il sera changé ailleurs dans la liste, par exemple:C'est parce que (comme vous l'avez lu l'expression de l'intérieur), vous créez une liste de 10 zéros. Ensuite, vous créez une liste de 10 références à la liste initiale de 10 zéros.
Noter que:
travaillera aussi et ça évite la liste imbriquée compréhension. Si
numpy
n'est pas sur la table, c'est la forme que je voudrais utiliser.[ [0]*M for _ in xrange(N) ]
également le travail et évite une liste imbriquée-comp (puisque 0 est immuable)pour Python 3 (pas plus xrange), la meilleure réponse
de M x N de matrice de zéros
Dans le second cas vous créez une liste de références à la même liste. Si vous avez un code comme:
où la
lst
est une référence à une liste, vous aurez la liste suivante:Mais parce que les résultats de la liste contient des références à l'objet même, si vous modifiez une valeur dans une ligne, il sera modifié dans tous les autres lignes.