(a==b) ? 'Yes' : 'No'

Emile van Sebille emile at fenx.com
Wed Apr 7 12:28:32 EDT 2010


On 4/6/2010 9:20 PM Steven D'Aprano said...
> On Tue, 06 Apr 2010 16:54:18 +0000, Duncan Booth wrote:
>> Most old hands would (IMHO) write the if statements out in full,
>> though some might remember that Python comes 'batteries included':
>>
>>   from bisect import bisect
>>   WEIGHTS = [100, 250, 500, 1000]
>>   STAMPS = [44, 60, 80, 100, 120]
>>
>>   ...
>>   stamp = STAMPS[bisect(WEIGHTS,weight)]
>
>
> Isn't that an awfully heavyweight and obfuscated solution for choosing
> between five options? Fifty-five options, absolutely, but five?
>

Would it be easier to digest as:

from bisect import bisect as selectindex #

WEIGHTLIMITS = [100, 250, 500, 1000]
POSTAGEAMOUNTS = [44, 60, 80, 100, 120]

postage = POSTAGEAMOUNTS[selectindex(WEIGHTLIMITS, weight)]

---

I've used bisect this way for some time -- I think Tim may have pointed 
it out -- and it's been handy ever since.

Emile





More information about the Python-list mailing list