为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

海绵宝宝撒 2021-03-30 15:03:12
我正在学习用python编写代码。我的第一个自赋值分配是Dijkstra的算法,我能够make_graph并填充它,但是在确定SSSP(源)时遇到了麻烦。我试图用来min(list,key=func())获得价值最小的物品。“ key = func()”:在另一个具有相同最小值的索引的列表中,其值必须为“尚未迭代”如何传递当前列表项(正在迭代到关键基金()以检查它)在check_list中具有对应的值为“尚未迭代”。如果key = True,将返回最小值吗?如果func()返回布尔值,key = func()的工作方式
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

只需使用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'

在pythonTrue中等于1和False等于0,因此,如果func()返回布尔值,则实际上您的min函数将比较just1和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

另一个例子:


>>> lis  = [[4,5,6], [1,2], [13,1,1,1], [1000]]

>>> def func(x):

...     return len(x)  #comparisons are done based on this value

... 

>>> min(lis, key = func)

[1000]

#equal to

>>> min(lis, key = len)

[1000]


查看完整回答
反对 回复 2021-04-02
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信