我试图在正常功能中转换labda函数但无法理解它。
def closest(u):
return min(updated_unique_list, key=lambda v: len(set(u) ^ set(v)))
这个labda和min如何工作?
我试图从文档中理解,但我想用这个例子理解并创建一个普通函数而不是这个lambda函数。
答案 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 difference。 set(u) ^ set(v)
会返回一组未在u
和v
中显示的元素。如果u
和v
相等,则结果的大小将为零;如果它们根本不重叠,则结果的大小为最大值。
因此,该函数尝试在updated_unique_list
中找到一个具有u
最常见元素的对象。
如果您想要“正常功能”,只需根据我上面描述的算法展开min
。