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/

Reply via email to