Sto refactoring una funzione che, data una serie di endpoint che definiscono implicitamente gli intervalli, controlla se un numero è incluso nell'intervallo e quindi restituisce un corrispondente (non correlato in alcun modo calcolabile). Il codice che ora gestisce il lavoro è:Python: mappatura da intervalli a valori
if p <= 100:
return 0
elif p > 100 and p <= 300:
return 1
elif p > 300 and p <= 500:
return 2
elif p > 500 and p <= 800:
return 3
elif p > 800 and p <= 1000:
return 4
elif p > 1000:
return 5
Che è IMO abbastanza orribile, e manca in quanto entrambi gli intervalli ed i valori di ritorno sono hardcoded. Qualsiasi utilizzo di qualsiasi struttura dati è ovviamente possibile.
+1 Mi piace. Si impara qualcosa di nuovo ogni giorno. – kjfletch
+1: incredibile! –
Davvero impressionante. Super pulito, e credo anche molto veloce. Può anche essere facilmente esteso nel caso in cui uno abbia bisogno di un ordinamento non naturale o qualcos'altro in cambio, come una stringa: importazione bisect n = bisect.bisect_left ([100,300,500,800,1000], p) a = ["assente", "basso", "medio", "alto", "molto alto", "estremo"] a [n] – Agos