Документация по Python

Модуль operator

В: Документация по Python

Операторы как альтернатива инфиксному оператору

Для каждого инфиксного оператора, например , + есть operator -функция (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 .

Methodcaller

Вместо этого 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]))

 

Или сортировка списка кортежей по второму элементу, первому первому элементу, как вторичному:

alist_of_tuples = [(5,2), (1,3), (2,2)]
sorted(alist_of_tuples, key=itemgetter(1,0))
# Output: [(2, 2), (5, 2), (1, 3)] 
Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.