我正在尝试将 Labda 函数转换为正常函数,但无法理解它。
def closest(u):
return min(updated_unique_list, key=lambda v: len(set(u) ^ set(v)))
Run Code Online (Sandbox Code Playgroud)
Labda 和 Min 是如何工作的?
我试图从文档中理解,但我想通过这个示例来理解并创建一个普通函数而不是这个 lambda 函数。
min找到关于函数的可迭代的最小值。min(lst, key=func)在Python中可以粗略地认为是(忽略细节,例如f尽可能少地调用或仅遍历列表一次)
retval = lst[0]
for item in lst:
if func(item) < func(retval):
retval = item
return retval
Run Code Online (Sandbox Code Playgroud)
就您而言,它会找到最小v的项目。updated_unique_listlen(set(u) ^ set(v))
现在,^两组之间是它们的对称差。set(u) ^ set(v)返回未同时出现在u和中的一组元素v。u如果和相等,结果的大小将为零v;如果它们根本不重叠,则结果的大小最大。
因此,该函数尝试在 中查找 updated_unique_list与 具有最常见元素的对象u。
如果您想要“正常功能”,只需min根据我上面描述的算法进行扩展即可。