On 29 Aug 2020, at 13:42, Filipp Bakanov <filipp@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()) # 1print(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