間隔を暗黙的に定義する一連のエンドポイントを指定して、間隔に数値が含まれているかどうかを確認し、対応する(計算可能な方法では関係しない)関数をリファクタリングしています)。 今の仕事を処理しているコードがある:IMOかなり恐ろしいであり、その間隔の両方に欠け、戻り値がハードコードされてPython:間隔から値へのマッピング
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
。 任意のデータ構造を使用することはもちろん可能です。
+1私はこれが好きです。あなたは毎日何か新しいことを学びます。 – kjfletch
+1:信じられないほど! –
本当に印象的です。スーパークリーン、私は非常に速くも信じています。 文字列のように非自然順序付けや何か他のものが必要な場合は、簡単に拡張することもできます。 import bisect n = bisect。bisect_left([100,300,500,800,1000]、p) a = [「不在」、「低い」、「平均」、「高い」、「非常に高い」、「極端な」 [n] – Agos