簡體   English   中英

Python捷徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM