Python - Initialisation De Plusieurs Listes/Ligne
C'est terriblement laid:
psData = []
nsData = []
msData = []
ckData = []
mAData = []
RData = []
pData = []
Est-il un moyen de déclarer ces variables sur une seule ligne?
- Je ne pense pas que c'est moche, surtout si vous ne psData = [] # un commentaire expliquant ce qu'il y a dedans
- La laideur ou pas, méfiez-vous avec ces noms si semblables l'un à l'autre: psData et pdata, mAData et msData...
- -1: Ne remplacez pas un peu de "code de golf" de construction qui utilise le minimum de touches du clavier. C'est gentil. Rien de plus laconique déconcertent et frustrer les gens qui veulent le maintien de ce programme. En effet, rien de plus obscur que ce sera probablement obtenir réécrit pour cette.
- Il ne devrait pas être déroutant si le codeur comprend un commentaire pour expliquer ce que la ligne de code, comme # liste d'initialisation des variables
InformationsquelleAutor thenickname | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
L'inconvénient de l'approche ci-dessus, vous devez compter le nombre de noms sur la gauche de
=
et ont exactement le même nombre de vider les listes (par exemple via l'range
appel, ou plus explicitement) sur la main droitecôté.
La chose principale est, ne pas utiliser quelque chose comme
ni
qui ferait de tous les noms font référence à la même liste vide!
alist, blist, clist = []
et de l'échec, jusqu'à ce que j'ai trouvé ceEn fonction de vos besoins, vous pourriez envisager d'utiliser un defaultdict avec une liste d'usine.
Quelque chose comme:
et ensuite, vous pouvez directement ajouter à my_lists["psData"] et ainsi de suite.
Ceci est la page de doc: http://docs.python.org/library/collections.html#collections.defaultdict
Un peu plus efficace:
[NOTE]:
xrange()
est plus optimale querange()
dans Python2. (Ref)La
i
variable était inutilisable donc à l'aide d'_
est mieux. (Ref)xrange()
n'est pas défini dans Python3.Bare à l'esprit que, à la propreté peut venir avec des consequences de la performance. La gamme de l'appel de fonction de ralentir le processus init légèrement. Méfiez-vous si vous avez quelques processus qui ont besoin de réinitialiser la variable beaucoup de temps.
Vous pouvez utiliser une classe pour initialiser/stocker les données, il faudrait plus de lignes, mais il pourrait être plus facile à lire, et plus orientée objet.
Comme:
Puis, en principal, à proximité du début:
Ensuite dans vos boucles ou n'importe où dans le poste principal de la déclaration, vous pouvez utiliser la classe.
Quelque chose le long des lignes de
semble être la solution la plus élégante.