сб, 2 февр. 2019 г. в 07:33, Steven D'Aprano
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