[Python-ideas] Vectorization [was Re: Add list.join() please]

Kirill Balunov kirillbalunov at gmail.com
Sat Feb 2 04:22:10 EST 2019


сб, 2 февр. 2019 г. в 07:33, Steven D'Aprano <steve at pearwood.info>:

>
> I didn't say anything about a vector type.
>
>
I agree  you did not say. But since you started a new thread from the one
where the vector type was a little discussed, it seemed to me  that it is
appropriate to mention it here. Sorry about that.


> > Therefore, it allows you to ensure that the method is present for each
> > element in the vector. The first given example is what numpy is all about
> > and without some guarantee that L consists of homogeneous data it hardly
> > make sense.
>
> Of course it makes sense. Even numpy supports inhomogeneous data:
>
> py> a = np.array([1, 'spam'])
> py> a
> array(['1', 'spam'],
>       dtype='|S4')
>
>
Yes, numpy, at some degree, supports heterogeneous arrays. But not in the
way you brought it. Your example just shows homogeneous array of type
`'|S4'`. In the same way as `np.array([1, 1.234])` will be homogeneous. Of
course you can say -  np.array([1, 'spam'], dtype='object'), but in this
case it will also be homogeneous array, but of type `object`.


> Inhomogeneous data may rule out some optimizations, but that hardly
> means that it "doesn't make sense" to use it.
>

I did not say that it  "doesn't make sense". I only said that you should be
lucky to call `..method()` on collections of heterogeneous data. And
therefore, usually this kind of operations imply that you are working with
a "homogeneous data". Unfortunately, built-in containers cannot provide
such a guarantee without self-checking. Therefore, in my opinion that at
the moment such an operator is not needed.

With kind regards,
-gdg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190202/f1c1123f/attachment.html>


More information about the Python-ideas mailing list