Please no. If you want lisp, use lisp (or something in the lisp family) On Mon, Oct 5, 2020 at 5:53 AM Ricky Teachey <ri...@teachey.org> wrote: > If you find yourself preferring this map() style of code a lot (rather than using generator expressions), you can make a utility function:
def getter(obj): return obj.__getitem__ or use the ones that are already in the stdlib: In [3]: operator.attrgetter? Init signature: operator.attrgetter(self, /, *args, **kwargs) Docstring: attrgetter(attr, ...) --> attrgetter object Return a callable object that fetches the given attribute(s) from its operand. After f = attrgetter('name'), the call f(r) returns r.name. After g = attrgetter('name', 'date'), the call g(r) returns (r.name, r.date). After h = attrgetter('name.first', 'name.last'), the call h(r) returns (r.name.first, r.name.last). -CHB --- Ricky. "I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler > On Mon, Oct 5, 2020 at 8:42 AM <george.winton.hard...@gmail.com> wrote: > >> Hi all, >> >> I've been working in q and k, which is where this idea comes from. >> >> My idea is to make lists and dicts callable, with __call__ = >> __getitem__. >> >> So that: >> >> [3,4,5](1) gives 4 >> {'a':1, 'b': 2}('b') gives 2 >> >> Arguably a list is a function which maps from range(len(list)) to the >> list entries, and a dictionary is a function that maps from keys to >> values. >> >> This would mean that functions designed to take functions, can be >> repurposed to take data, for example: >> >> map(lst, idxs) instead of (lst[i] for i in idxs) or map(lambda x: >> lst[x], idxs) >> map(dct, lst) instead of (dct[l] for l in lst) >> >> sorted(range(len(lst)), key=lst) to calculate the equivalent of >> np.argsort >> max(range(len(lst)), key=lst) to calculate the equivalent of np.argmax >> >> I couldn't find this being discussed before. Does anyone like it? There >> is room for confusion as it would mean that e.g. filter([1,2], [0,1]) >> would give [0,1] whilst [1] might be expected. >> >> Best, >> >> George Harding >> >> p.s. Thank you to everyone for their work on such a wonderful language. >> _______________________________________________ >> Python-ideas mailing list -- python-ideas@python.org >> To unsubscribe send an email to python-ideas-le...@python.org >> https://mail.python.org/mailman3/lists/python-ideas.python.org/ >> Message archived at >> https://mail.python.org/archives/list/python-ideas@python.org/message/MZCYYFDDNJ4ETXLKAYFRU76LB3JWLZOJ/ >> Code of Conduct: http://python.org/psf/codeofconduct/ >> > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/OPXPI5KI3YZ2MCNSVHU3E2S7KTYNFXHU/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- Christopher Barker, PhD Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/XVUOASRZOZHXI2L7UXU4YNWIAB5P5BQC/ Code of Conduct: http://python.org/psf/codeofconduct/