Python "why" questions

Robert Kern robert.kern at gmail.com
Tue Aug 17 17:22:27 CEST 2010

```On 8/16/10 11:10 PM, Steven D'Aprano wrote:
> On Mon, 16 Aug 2010 22:56:20 -0500, Robert Kern wrote:
>
>> On 8/16/10 9:29 PM, Roy Smith wrote:
>>> In article<i4cqg0\$olf\$3 at lust.ihug.co.nz>,
>>>    Lawrence D'Oliveiro<ldo at geek-central.gen.new_zealand>   wrote:
>>>
>>>> In message<roy-EE1B7F.21001716082010 at news.panix.com>, Roy Smith wrote:
>>>>
>>>>> 5) real intensity[160.0 : 30.0 : 0.01]
>>>>
>>>> How many elements in that array?
>>>>
>>>> a) 2999
>>>> b) 3000
>>>> c) neither of the above
>>>
>>> c) neither of the above.  More specifically, 13,001 (if I counted
>>> correctly).
>>
>> 13000, actually. Floating point is a bitch.
>>
>> [~/Movies]
>> |1>  import numpy
>>
>> [~/Movies]
>> |2>  len(numpy.r_[160.0:30.0:-0.01])
>> 13000
>
>
> Actually, the answer is 0, not 13000, because the step size is given as
> 0.01, not -0.01.
>
>>>> import numpy
>>>> len(numpy.r_[160.0:30.0:-0.01])
> 13000
>>>> len(numpy.r_[160.0:30.0:0.01])
> 0

Roy wasn't using numpy/Python semantics but made-up semantics (following Martin
Gregorie's made-up semantics to which he was replying) which treat the step size
as a true size, not a size and direction. The direction is determined from the
start and stop parameters. It's an almost-reasonable design.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma