サーチ…


中置演算子の代替としての演算子

すべての中置演算子の場合は、例えば+そこにあるoperator (-function operator.addため+ ):

1 + 1
# Output: 2
from operator import add
add(1, 1)
# Output: 2

たとえ算術演算子で数値入力のみが可能である主な文書で述べていますが、

from operator import mul
mul('a', 10)
# Output: 'aaaaaaaaaa'
mul([3], 3)
# Output: [3, 3, 3]

公式のPythonドキュメントでは、演算から演算子関数へのマッピングも参照してください。

メソッド呼び出し

メソッドを明示的に呼び出すこのlambda関数の代わりに:

alist = ['wolf', 'sheep', 'duck']
list(filter(lambda x: x.startswith('d'), alist))     # Keep only elements that start with 'd'
# Output: ['duck']

同じことをする演算子関数を使うことができます:

from operator import methodcaller
list(filter(methodcaller('startswith', 'd'), alist)) # Does the same but is faster.
# Output: ['duck']

Itemgetter

itemgetterを使用して辞書のキーと値のペアを値でグループ化する:

from itertools import groupby
from operator import itemgetter
adict = {'a': 1, 'b': 5, 'c': 1}

dict((i, dict(v)) for i, v in groupby(adict.items(), itemgetter(1)))
# Output: {1: {'a': 1, 'c': 1}, 5: {'b': 5}}

これは以下のようなlambda関数と同等ですが(より速い):

dict((i, dict(v)) for i, v in groupby(adict.items(), lambda x: x[1]))

または、2番目の要素によってタプルのリストをソートするには、最初の要素をセカンダリとしてソートします。

alist_of_tuples = [(5,2), (1,3), (2,2)]
sorted(alist_of_tuples, key=itemgetter(1,0))
# Output: [(2, 2), (5, 2), (1, 3)]


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow