lambda在python中进行函数转换

时间:2011-12-15 05:49:07

标签: python lambda min

我试图在正常功能中转换labda函数但无法理解它。

def closest(u): 
    return min(updated_unique_list, key=lambda v: len(set(u) ^ set(v)))

这个labda和min如何工作?
我试图从文档中理解,但我想用这个例子理解并创建一个普通函数而不是这个lambda函数。

1 个答案:

答案 0 :(得分:4)

min找到关于函数的iterable的最小值。 Python中的min(lst, key=func)大致可以被视为 (忽略尽可能少地调用f或仅在列表中遍历一次的详细信息)

retval = lst[0]
for item in lst:
  if func(item) < func(retval):
     retval = item
return retval

在您的情况下,它会在v中找到updated_unique_list项,使len(set(u) ^ set(v))最小。

现在,两个集合之间的^symmetric differenceset(u) ^ set(v)会返回一组未在uv中显示的元素。如果uv相等,则结果的大小将为零;如果它们根本不重叠,则结果的大小为最大值。

因此,该函数尝试在updated_unique_list中找到一个具有u最常见元素的对象。

如果您想要“正常功能”,只需根据我上面描述的算法展开min