Python Language
Modulo operatore
Ricerca…
Operatori in alternativa a un operatore infisso
Per ogni operatore infisso, ad es. +
C'è una funzione- operator
( operator.add
per +
):
1 + 1
# Output: 2
from operator import add
add(1, 1)
# Output: 2
anche se la documentazione principale afferma che per gli operatori aritmetici è consentito solo l'input numerico è possibile:
from operator import mul
mul('a', 10)
# Output: 'aaaaaaaaaa'
mul([3], 3)
# Output: [3, 3, 3]
Vedi anche: mappatura da operazione a funzione operatore nella documentazione ufficiale di Python .
Methodcaller
Invece di questa funzione lambda
che chiama esplicitamente il metodo:
alist = ['wolf', 'sheep', 'duck']
list(filter(lambda x: x.startswith('d'), alist)) # Keep only elements that start with 'd'
# Output: ['duck']
si potrebbe usare una funzione dell'operatore che faccia lo stesso:
from operator import methodcaller
list(filter(methodcaller('startswith', 'd'), alist)) # Does the same but is faster.
# Output: ['duck']
Itemgetter
Raggruppamento delle coppie chiave-valore di un dizionario in base al valore con 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}}
che è equivalente (ma più veloce) a una funzione lambda
come questa:
dict((i, dict(v)) for i, v in groupby(adict.items(), lambda x: x[1]))
O ordinando una lista di tuple dal secondo elemento prima il primo elemento come secondario:
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow