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
On Mon, Feb 4, 2019 at 7:14 AM Kirill Balunov <kirillbalunov@gmail.com> wrote:
len(v) # -> 12v[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 from my_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@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
On Mon, Feb 4, 2019 at 7:14 AM Kirill Balunov <kirillbalunov@gmail.com> wrote:
len(v) # -> 12v[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 from my_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@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/