max()函数:如何获取正在迭代的项并传递给key = func()

时间:2013-06-17 08:11:05

标签: python python-2.7

我正在学习python中的代码。 我的第一个自我分配的任务是Dijkstra的算法 我能够make_graph并填充它但我仍然坚持确定SSSP(源)。

我正在尝试使用min(list,key=func())来获取价值最低的项目。 “key = func()”:在具有相同的最小值索引的另一个列表中,必须具有“尚未迭代”的值

如何传递当前列表项,正在迭代到key fund()以检查它在check_list中的对应值为“not Iterated yet”。 如果key = True,则返回最小值?

如果func()返回一个布尔值

,key = func()的工作原理如何

1 个答案:

答案 0 :(得分:6)

只需使用func,即可删除()

min(list,key=func)

示例:

>>> lis = [ '1', '2', '3', '4' ]
>>> def func(x):
...     return int(x)
... 
>>> min(lis, key=func) # each value from list is passed to `func`(one at a time)
'1'

在python中True等于1,而False等于0,所以如果func()返回布尔值,那么实际上你的{{1} }}函数只会比较min1

0

示例:

>>> True == 1
True
>>> False == 0
True

另一个例子:

>>> def func(x): return bool(x)
>>> lis = [ 1, [], 3, 4 ]
>>> min(lis, key=func) # bool([]) evaluated to False, ie 0
[]
>>> max(lis, key=func)
1