On 29/08/2020 14:17, Barry Scott wrote:
On 29 Aug 2020, at 13:42, Filipp Bakanov <fil...@bakanov.su <mailto:fil...@bakanov.su>> wrote:

I'd like to propose adding argmax and argmin functions to the python list. These functions return the index of a maximum / minimum element of the list. Eg:

a = [1, 4, 2, 3]
print(a.argmax())  # 1
print(a.argmin())  # 0

It's a very popular request (based on stackoverflow https://stackoverflow.com/questions/16945518/finding-the-index-of-the-value-which-is-the-min-or-max-in-python ), and currently there is no elegant way to find it.

What do you think?

Just do this:

>>> a=[1,4,2,3]
>>> min(a)
1
>>> a.index(min(a))
0
>>> a.index(max(a))
1

Barry

This has the drawback of passing twice over the list. The following doesn't, but the complexity somewhat makes Filipp's point:

>>> min((e, i) for i, e in enumerate(a))[1]
0

I think one would want argmin() and argmax() to work with general iterables, so I wonder if the stdlib would not be a better home than list itself. I half expected it to be an itertools recipe. The advantage of a recipe is that variations such as needing the last occurrence of the minimum are easily accommodated.

Jeff Allen

_______________________________________________
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/BIT3CJZTC3NM4U2ALCS3JALH5KUPYVBJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to