Pregunta

Python está lleno de pequeños atajos ordenadas.

Por ejemplo:

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

y (aunque no tan bonito)

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

entre muchos otros.

En el canal de IRC, dijeron "demasiados para conocerlos a todos".

Creo que hay que enumerar algunas aquí, como me encanta el uso de estos atajos para acortar y refctor mi código. Estoy seguro de que esto beneficiaría a muchos.

¿Fue útil?

Solución

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

es dreck - utilizar

self.data = map(list, data)

Si eres un fanático de map (listas por comprensión se prefieren por lo general en estos días). De manera más general, puede lambda x: somecallable(x) siempre puede cambiar de forma productiva a solo somecallable, en cada contexto, con nada más que un buen efecto.

En cuanto a los accesos directos en general, mi esposa y yo hicimos nuestro mejor esfuerzo para enumerar el más importante y útil en la primera parte de la segunda edición del libro de cocina de Python -. Podría ser un comienzo

Otros consejos

Alex Martelli proporciona una versión aún más corto del primer ejemplo. I presentará una versión (ligeramente) más corto del segundo:

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

Es evidente que la convierte en el operador más ventajosa, los más valores que se prueba para.

También me gustaría hacer hincapié en que el acortamiento y la refactorización es buena sólo en la medida en que mejora la claridad y legibilidad. (A menos que sea de código de golf;).

No estoy seguro si esto es un atajo, pero me encanta:

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

(No sé quién se le ocurrió esto, pero no era yo.)

Siempre me ha gustado el "descomprimir" idioma:

>>> 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top