0

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チャンネルでは、彼らは「多すぎてすべてを知ることができない」と言っていました。

これらのショートカットを使用してコードを短縮および短縮するのが大好きなので、ここにいくつかリストする必要があると思います。これは多くの人に利益をもたらすと確信しています。

4

4 に答える 4

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

ドレックです-使用

self.data = map(list, data)

あなたがmap狂信者である場合(最近はリスト内包表記が一般的に好まれています)。より一般的には、すべてのコンテキストで、常に生産的に変更するlambda x: somecallable(x)ことができますが、効果はあります。somecallable

一般的なショートカットに関しては、妻と私は、PythonCookbookの第2版の最初の部分で最も重要で有用なものをリストするために最善を尽くしました。

于 2009-06-12T04:45:29.767 に答える
3

Alex Martelliは、最初の例のさらに短いバージョンを提供しました。私はあなたの2番目の(わずかに)短いバージョンを提供します:

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

明らかに、in演算子は、テストする値が多いほど有利になります。

また、短縮とリファクタリングは、明瞭さと読みやすさを向上させる範囲でのみ有効であることを強調したいと思います。(あなたがコードゴルフをしているのでない限り。;)

于 2009-06-12T05:24:11.733 に答える
3

これがショートカットかどうかはわかりませんが、気に入っています。

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

(誰がこれを思いついたのかはわかりませんが、私ではありませんでした。)

于 2009-06-12T10:01:58.370 に答える
1

私はいつも「解凍」イディオムが好きでした:

>>> 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)
于 2009-06-12T13:26:38.440 に答える