Mostly so that there is no performance lost when someone passes range(...)
instead of np.arange(...).  At least I had never realized that one is much
faster than the other and always just passed range() as a convenience.

Antony

2016-02-17 10:50 GMT-08:00 Chris Barker <chris.bar...@noaa.gov>:

> On Sun, Feb 14, 2016 at 11:41 PM, Antony Lee <antony....@berkeley.edu>
> wrote:
>
>> So how can np.array(range(...)) even work?
>>
>
> range()  (in py3) is not a generator, nor is is a iterator. it is a range
> object, which is lazily evaluated, and satisfies both the iterator protocol
> and the sequence protocol (at least most of it:
>
> In [*1*]: r = range(10)
>
>
> In [*2*]: r[3]
>
> Out[*2*]: 3
>
>
> In [*3*]: len(r)
>
> Out[*3*]: 10
>
>
> In [*4*]: type(r)
>
> Out[*4*]: range
>
> In [*9*]: isinstance(r, collections.abc.Sequence)
>
> Out[*9*]: True
>
> In [*10*]: l = list()
>
> In [*11*]: isinstance(l, collections.abc.Sequence)
>
> Out[*11*]: True
>
> In [*12*]: isinstance(r, collections.abc.Iterable)
>
> Out[*12*]: True
> I'm still totally confused as to why we'd need to special-case range when
> we have arange().
>
> -CHB
>
>
>
> --
>
> Christopher Barker, Ph.D.
> Oceanographer
>
> Emergency Response Division
> NOAA/NOS/OR&R            (206) 526-6959   voice
> 7600 Sand Point Way NE   (206) 526-6329   fax
> Seattle, WA  98115       (206) 526-6317   main reception
>
> chris.bar...@noaa.gov
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to