Python查找列表项函数的最小值,但返回列表项

时间:2013-01-13 16:03:21

标签: python list minimum

很抱歉,在标题中解释我的问题有点困难,但基本上,我有一个职位列表,每个职位都可以通过一个函数来获取一个数字,为​​你提供有关职位的数据。我想要做的是返回列表中具有最低数据值的位置,但我似乎找不到这样做的方法。

一些伪代码应该有所帮助:

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

def minpos(self)
    returns position with the least x**2-y value

2 个答案:

答案 0 :(得分:6)

Python很酷:D:

min(positions, key=posfunc)

来自内置文档:

>>> 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.

lambda值得一提:

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

如果您没有在其他地方使用posfunc,我认为大致相同,但更具可读性。

答案 1 :(得分:3)

你基本上可以使用min()函数

pos = [(234, 4365), (234, 22346), (2342, 674)]

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

min(pos, key=posfunc)