Skip to main content
 首页 » 编程设计

python之在 lambda 中执行 if

2025年05月04日18Renyi-Fan

我有一个元组列表:

lst = [('654', '2.12', '86'), ('2', '756'), ('5', '1.77', '71'), ('1.65', '55')] 

函数

num = min(lst,key=lambda x: abs(float(x[1]) - 2)) 

在每个元组内的位置x[1]处查找每个数字并输出x[1]最接近2的元组。是否可以调整函数,以便它仅查找具有 len == 3 的元组?

如果是这样,我想同时输出那个元组和后面的 2 项元组。例如。对于上述最终结果应该是:

[('654', '2.12', '86'), ('2', '756')] 有了这个,我认为 for 循环就足够了,所以我想我会处理的。

请您参考如下方法:

如果列表总是在 3 元组和 2 元组之间交替,您可以使用

zip(*[iter(lst)]*2) 

到group the items into pairs .然后你就可以像以前一样使用 min 了:

In [39]: min(zip(*[iter(lst)]*2),key=lambda (x,y): abs(float(x[1]) - 2)) 
Out[39]: (('654', '2.12', '86'), ('2', '756'))