Question

Python est rempli de petits raccourcis soignées.

Par exemple:

self.data = map(lambda x: list(x), data)

et (bien que pas assez)

tuple(t[0] for t in self.result if t[0] != 'mysql' and t[0] != 'information_schema')

parmi tant d'autres.

Dans le canal irc, ils ont dit « trop nombreux pour les connaître ».

Je pense que nous devrions énumérer quelques-unes ici, comme je l'aime utiliser ces raccourcis pour raccourcir et refctor mon code. Je suis sûr que cela profiterait beaucoup.

Était-ce utile?

La solution

self.data = map(lambda x: list(x), data)

est Dreck - utiliser

self.data = map(list, data)

si vous êtes un fanatique de map (liste compréhensions sont généralement préférés ces jours-ci). De manière plus générale, lambda x: somecallable(x) peut toujours être modifié de façon productive juste somecallable, tous contexte, rien mais bon effet.

En ce qui concerne les raccourcis en général, ma femme et moi avons fait de notre mieux pour la liste la plus importante et utile dans la première partie de la deuxième édition du livre de recettes Python -. Pourrait être un début

Autres conseils

Alex Martelli a fourni une version encore plus courte de votre premier exemple. Je fournirai une version (légèrement) plus courte de votre seconde:

tuple(t[0] for t in self.result if t[0] not in ('mysql', 'information_schema'))

Il est évident que l'opérateur en devient plus avantageux plus des valeurs que vous testez pour.

Je voudrais également souligner que le raccourcissement et refactoring est bon que dans la mesure où il améliore la clarté et la lisibilité. (Sauf si vous êtes un code-golf;).

Je ne sais pas si cela est un raccourci, mais je l'aime:

>>> class Enum(object):
        def __init__(self, *keys):
            self.keys = keys
            self.__dict__.update(zip(keys, range(len(keys))))
        def value(self, key):
            return self.keys.index(key)          

>>> colors = Enum("Red", "Blue", "Green", "Yellow", "Purple")
>>> colors.keys
('Red', 'Blue', 'Green', 'Yellow', 'Purple')
>>> colors.Green
2

(Je ne sais pas qui est venu avec, mais ce ne fut pas moi.)

J'ai toujours aimé l'idiome "dézipper":

>>> zipped = [('a', 1), ('b', 2), ('c', 3)]
>>> zip(*zipped)
[('a', 'b', 'c'), (1, 2, 3)]
>>> 
>>> l,n = zip(*zipped)
>>> l
('a', 'b', 'c')
>>> n
(1, 2, 3)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top