Reorganizuję funkcję, która, biorąc pod uwagę serię punktów końcowych, które domyślnie definiują interwały, sprawdza, czy liczba jest zawarta w przedziale, a następnie zwraca odpowiednią (niezwiązaną w żaden obliczalny sposób). Kod, który jest teraz obsługę prac jest:Python: Mapowanie z przedziałów na wartości
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
Który jest IMO dość straszne, i nie ma tym, że zarówno odstępach i zwracane wartości są ustalony. Jakiekolwiek wykorzystanie dowolnej struktury danych jest oczywiście możliwe.
+1 Podoba mi się to. Każdego dnia uczysz się czegoś nowego. – kjfletch
+1: niewiarygodne! –
Naprawdę imponujące. Super czysty, i wierzę też bardzo szybko. Można go również łatwo rozszerzyć w przypadku, gdy potrzebna jest nienaturalna kolejność lub coś innego w zamian, np. Ciąg znaków: import bisect n = bisect.bisect_left ([100,300,500,800,1000], p) a = ["nieobecny", "niski", "średni", "wysoki", "bardzo wysoki", "skrajny"] a [n] – Agos