Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python finding minimum values of functions of list items, but returning the list item

Sorry, it's a bit hard to explain my question in a title, but basically, I have a list of positions, and each position can be passed through a function to get a number that gives you data about the position. What I want to do is return the position with the lowest data value in the list, but I can't seem to find a way to do this.

A bit of pseudo code should help:

def posfunc(self,pos):
    x,y = pos
    return x**2-y

def minpos(self)
    returns position with the least x**2-y value
like image 835
Treesin Avatar asked Jan 27 '26 04:01

Treesin


1 Answers

Python is pretty cool :D:

min(positions, key=posfunc)

From built-in documentation:

>>> help(min)
min(...)
    min(iterable[, key=func]) -> value
    min(a, b, c, ...[, key=func]) -> value

    With a single iterable argument, return its smallest item.
    With two or more arguments, return the smallest argument.

And lambda's are worth mentioning here:

min(positions, key=lambda x: x[0]**2 - x[1])

Is roughly the same, but more readable I think, if you aren't using posfunc elsewhere.

like image 148
utdemir Avatar answered Jan 29 '26 19:01

utdemir