Модуль operator

Введение

Примеры

  • 0

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

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

  • 0

    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'] 
  • 2

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

Синтаксис

Параметры

Примечания