Here is a very toy proof-of-concept: >>> from vector import Vector >>> l = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split() >>> v = Vector(l) >>> v <Vector of ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']> >>> v.strip().lower().replace('a','X') <Vector of ['jXn', 'feb', 'mXr', 'Xpr', 'mXy', 'jun', 'jul', 'Xug', 'sep', 'oct', 'nov', 'dec']> >>> vt = Vector(tuple(l)) >>> vt <Vector of ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')> >>> vt.lower().replace('o','X') <Vector of ('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'Xct', 'nXv', 'dec')>
My few lines are at https://github.com/DavidMertz/stringpy One thing I think I'd like to be different is to have some way of accessing EITHER the collection being held OR each element. So now I just get: >>> v.__len__() <Vector of [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]> Yes, that's an ugly spelling of `len(v)`, but let's bracket that for the moment. It would be nice also to be able to ask "what's the length of the vector, in a non-vectorized way" (i.e. 12 in this case). Maybe some naming convention like: >>> v.collection__len__() 12 This last is just a possible behavior, not in the code I just uploaded. On Sat, Feb 2, 2019 at 6:47 PM Chris Angelico <ros...@gmail.com> wrote: > On Sun, Feb 3, 2019 at 10:36 AM Ben Rudiak-Gould <benrud...@gmail.com> > wrote: > > > > On Sat, Feb 2, 2019 at 3:23 PM Christopher Barker <python...@gmail.com> > wrote: > >> > >> a_list_of_strings.strip().lower().title() > >> > >> is a lot nicer than: > >> > >> [s.title() for s in (s.lower() for s in [s.strip(s) for s in > a_list_of_strings])] > >> > >> or > >> > >> list(map(str.title, (map(str.lower, (map(str.strip, > a_list_of_strings)))) # untested > > > > In this case you can write > > > > [s.strip().lower().title() for s in a_list_of_strings] > > What if it's a more complicated example? > > len(sorted(a_list_of_strings.casefold())[:100]) > > where the len() is supposed to give back a list of the lengths of the > first hundred strings, sorted case insensitively? (Okay so it's a > horrible contrived example. Bear with me.) > > With current syntax, this would need multiple map calls or comprehensions: > > [len(s) for s in sorted(s.casefold() for s in a_list_of_strings)[:100]] > > (Better examples welcomed.) > > ChrisA > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -- 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/