[英]Python shortcuts
Python充滿了簡潔的快捷方式。
例如:
self.data = map(lambda x: list(x), data)
和(盡管不是很漂亮)
tuple(t[0] for t in self.result if t[0] != 'mysql' and t[0] != 'information_schema')
其中無數。
在irc頻道中,他們說“太多了,不認識他們”。
我想我們應該在這里列出一些內容,因為我喜歡使用這些快捷方式來縮短和引用我的代碼。 我相信這將使許多人受益。
self.data = map(lambda x: list(x), data)
很累-使用
self.data = map(list, data)
如果您是map
狂熱者(如今,通常首選列表理解)。 更一般而言, lambda x: somecallable(x)
在任何情況下, 始終可以有效率地將lambda x: somecallable(x)
更改為somecallable
,但效果很好。
至於一般的快捷方式,我和我的妻子竭盡所能在Python Cookbook第二版的早期列出了最重要和最有用的快捷方式-可能是一個開始。
Alex Martelli提供了第一個示例的更短版本。 我將提供您的(第二個)簡短版本:
tuple(t[0] for t in self.result if t[0] not in ('mysql', 'information_schema'))
顯然,您要測試的值越多,in運算符將變得越有優勢。
我還想強調,縮短和重構只有在提高清晰度和可讀性的程度上才是好的。 (除非您正在打高爾夫球。;)
我不確定這是否是捷徑,但我喜歡它:
>>> 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
(我不知道是誰提出的,但不是我。)
我一直喜歡“解壓縮”的習慣用法:
>>> 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.