[Python-ideas] Vectorization [was Re: Add list.join() please]
Jimmy Girardet
ijkl at netc.fr
Tue Feb 5 04:12:24 EST 2019
Hi,
I'm not sure to understand the real purpose of Vector.
Is that a new collection ?
Is that a list with a builtin map() function ?
Is it a wrapper to other types ?
Should it be iterable ?
The clear need explained before is using fluent interface on a collection :
MyVector.strip().replace("A","E")
Why do we need Vector to behave like list. We just want to work on our
strings but with a cleaner/shorter/nicer syntax.
My idea (not totally clear in my mind) is that Vector should behave
quite like the type it wraps so having only one type.
I don't want a collection of strings, I want a MegaString (...) which I
can use exactly like alone string.
An iteration on Vector would iter like itertools.chain does.
At the end, I would only need one more method which would return an
iterable of the items like MyVector.explode()
For me Vector should be something like that :
class Vector:
def __init__(self, a_list):
self.data = a_list
self._type = type(self.data[0])
for data in self.data:
if type(data) != self._type:
raise TypeError
def __getattr__(self, name):
fn = getattr(self._type, name)
def wrapped(*args, **kwargs):
self.data = [fn(i, *args, **kwargs) for i in self.data]
return self
return wrapped
def explode(self):
return iter(self.data)
I'm not saying it should only handle strings but it seems to be the
major use case.
Jimmy
Le 04/02/2019 à 17:12, David Mertz a écrit :
> On Mon, Feb 4, 2019 at 7:14 AM Kirill Balunov <kirillbalunov at gmail.com
> <mailto:kirillbalunov at gmail.com>> wrote:
>
> len(v) # -> 12
>
> v[len] # -> <Vector of [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]>
>
>
> In this case you can apply any function,
> even custom_linked_list frommy_inhouse_module.py.
>
>
> I think I really like this idea. Maybe as an extra spelling but still
> allow .apply() to do the same thing. It feels reasonably intuitive to
> me. Not *identical to* indexing in NumPy and Pandas, but sort of in
> the same spirit as predicative or selection based indices.
>
> What do other people on this thread think? Would you learn that
> easily? Could you teach it?
>
>
> >>> v[1:]
> <Vector of ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
> 'Sep', 'Oct', 'Nov', 'Dec']>
> >>> v[i[1:]] # some helper class `i`
> <Vector of ['an', 'eb', 'ar', 'pr', 'ay', 'un', 'ul', 'ug',
> 'ep', 'ct', 'ov', 'ec']>
>
>
> This feels more forced, unfortunately. Something short would be good,
> but not sure I like this. This is really just a short spelling of
> pandas.IndexSlice or numpy.s_ It came up in another thread some
> months ago, but there is another proposal to allow the obvious
> spelling `slice[start:stop:sep]` as a way of creating slices.
>
> Actually, I guess that's all halfway for the above. We'd need to do
> this still:
>
> v[itemgetter(IndexSlicer[1:])]
>
>
> That's way too noisy. I guess I just don't find the lowercase `i` to
> be iconic enough. I think with a better SHORT name, I'd like:
>
> v[Item[1:]]
>
>
> Maybe that's not the name?
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons. Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
Le 04/02/2019 à 17:12, David Mertz a écrit :
> On Mon, Feb 4, 2019 at 7:14 AM Kirill Balunov <kirillbalunov at gmail.com
> <mailto:kirillbalunov at gmail.com>> wrote:
>
> len(v) # -> 12
>
> v[len] # -> <Vector of [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]>
>
>
> In this case you can apply any function,
> even custom_linked_list frommy_inhouse_module.py.
>
>
> I think I really like this idea. Maybe as an extra spelling but still
> allow .apply() to do the same thing. It feels reasonably intuitive to
> me. Not *identical to* indexing in NumPy and Pandas, but sort of in
> the same spirit as predicative or selection based indices.
>
> What do other people on this thread think? Would you learn that
> easily? Could you teach it?
>
>
> >>> v[1:]
> <Vector of ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
> 'Sep', 'Oct', 'Nov', 'Dec']>
> >>> v[i[1:]] # some helper class `i`
> <Vector of ['an', 'eb', 'ar', 'pr', 'ay', 'un', 'ul', 'ug',
> 'ep', 'ct', 'ov', 'ec']>
>
>
> This feels more forced, unfortunately. Something short would be good,
> but not sure I like this. This is really just a short spelling of
> pandas.IndexSlice or numpy.s_ It came up in another thread some
> months ago, but there is another proposal to allow the obvious
> spelling `slice[start:stop:sep]` as a way of creating slices.
>
> Actually, I guess that's all halfway for the above. We'd need to do
> this still:
>
> v[itemgetter(IndexSlicer[1:])]
>
>
> That's way too noisy. I guess I just don't find the lowercase `i` to
> be iconic enough. I think with a better SHORT name, I'd like:
>
> v[Item[1:]]
>
>
> Maybe that's not the name?
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons. Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190205/b1315b79/attachment-0001.html>
More information about the Python-ideas
mailing list