Domanda

Python è pieno di piccole scorciatoie pulito.

Ad esempio:

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

e (anche se non così bella)

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

tra gli innumerevoli altri.

Nel canale IRC, hanno detto "troppi per conoscerli tutti".

Credo che dovremmo elencare alcuni qui, come mi piace usare queste scorciatoie per abbreviare & refctor mio codice. Sono sicuro che questo gioverebbe molti.

È stato utile?

Soluzione

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

è dreck - usare

self.data = map(list, data)

Se sei un fanatico map (list comprehension sono generalmente preferiti in questi giorni). Più in generale, lambda x: somecallable(x) può sempre essere produttivamente cambiato in appena somecallable, in ogni contesto, con nient'altro che buon effetto.

Per quanto riguarda i collegamenti in generale, mia moglie e io abbiamo fatto del nostro meglio per elencare i più importanti e utili uno nella prima parte della seconda edizione del Python Cookbook -. Potrebbe essere un inizio

Altri suggerimenti

Alex Martelli ha fornito una versione ancora più breve del primo esempio. Io fornire una versione (leggermente) più corto del vostro secondo:

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

Ovviamente l'operatore in diventa più vantaggioso i più valori che stai test per.

Vorrei anche sottolineare che accorciamento e refactoring è buono solo nella misura in cui migliora la chiarezza e la leggibilità. (A meno che non sei in codice golf;).

Non sono sicuro se questa è una scorciatoia, ma mi piace:

>>> 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

(non so che si avvicinò con questo, ma non sono stato io.)

Mi è sempre piaciuto l'idioma "decomprimere":

>>> 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top