Skip to main content
 首页 » 编程设计

python之任何 python min 类函数,它给出一个列表作为结果

2025年05月04日13cmt

>>> lst 
[('BFD', 0), ('NORTHLANDER', 3), ('HP', 23), ('VOLT', 3)] 
>>> min([x for x in lst if x[1]!=0], key=lambda x: x[1]) 
('NORTHLANDER', 3) 
>>> 

这里 min() 只返回一组。它实际上应该返回:

[('NORTHLANDER', 3), ('VOLT', 3)] 

是否有任何内置函数可以达到这种效果?

请您参考如下方法:

这是一个简单的两步解决方案,首先计算最小值,然后收集所有具有最小值的元组,因此请编写您自己的函数来执行此操作。这是一个相当专业的操作,不是通用 min() 函数所期望的。

查找具有最小值的元素:

>>> lstm = min([x for x in lst if x[1] > 0], key = lambda x: x[1]) 
>>> lstm 
('NORTHLANDER', 3) 

然后形成一个新列表,从 list 中获取元素,其中的值是 lstm 的值:

>>> [y for y in lst if y[1] == lstm[1]] 
[('NORTHLANDER', 3), ('VOLT', 3)]