Frage

Python ist voller kleiner Abkürzungen.

Zum Beispiel:

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

und (obwohl nicht so hübsch)

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

unter unzähligen anderen.

Im IRC -Kanal sagten sie "zu viele, um sie alle zu kennen".

Ich denke, wir sollten einige hier auflisten, da ich diese Verknüpfungen liebe, um meinen Code zu verkürzen und zu refctor. Ich bin sicher, das würde vielen zugute kommen.

War es hilfreich?

Lösung

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

ist Dreck - Verwendung

self.data = map(list, data)

Wenn du a map Fanatiker (Listenverständnisse werden heutzutage im Allgemeinen bevorzugt). Allgemeiner, lambda x: somecallable(x) kann stets produktiv in gerecht verändert werden somecallable, in jeder Kontext, mit nur guter Wirkung.

In Bezug auf Abkürzungen im Allgemeinen haben meine Frau und ich unser Bestes getan, um die wichtigste und nützlichste im frühen Teil der zweiten Ausgabe des Python -Kochbuchs aufzulisten - könnte ein Anfang sein.

Andere Tipps

Alex Martelli stellte eine noch kürzere Version Ihres ersten Beispiels zur Verfügung. Ich werde eine (leicht) kürzere Version Ihrer zweiten bereitstellen:

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

Offensichtlich wird der In -Operator vorteilhafter, je mehr Werte Sie testen.

Ich möchte auch betonen, dass das Verkürzen und Refaktoring nur insofern gut ist, als es die Klarheit und Lesbarkeit verbessert. (Es sei denn, Sie sind Code-Golfing;)

Ich bin mir nicht sicher, ob dies eine Abkürzung ist, aber ich liebe es:

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

(Ich weiß nicht, wer sich das ausgedacht hat, aber ich war es nicht.)

Ich mochte immer das "Unzip" -Idiom:

>>> 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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top