[英]lambda function explanation
我在互联网上找到了lambda函数。 我正在使用它并正确获得输出。 但是我需要知道解释,以便我可以根据需要更改功能。
此功能正在删除列表中的所有重复数据。 但是我无法弄清楚L和X值是如何进行的。 另外l.append(x)或l在这里做什么。 它会在什么条件下选择哪一个。 请解释。 让我们假设Columns [“ Hello”]具有[1,1,2,3,4,5,6,6,7,8,9,9,10,0]
repeating_data = reduce(lambda l, x:
l.append(x) or l if x not in l else l,
columns['Hello'], [])
谢谢洛基
我同意,它使代码无法通过复杂的lambda函数读取。
lambda函数大致等同于以下内容(带有注释),
def ext_function(columns['Hello']):
#Empty list to accumulate values
l = []
#Iterate through column
for x in columns['Hello']:
#if col_value not in l , append
if x not in l:
l.append(x)
return l
reduce
函数是将lambda
函数依次应用于输入列表列['Hello']和累加器[]。
老实说,如果您只是想消除重复,只需一行就可以实现相同的效果。
l = list(set(Columns["Hello"]))
希望这可以帮助。
我将使用set在列表中查找唯一项。
unique_items = list(set(columns["Hello"]))
为了解释这段代码中发生的事情,诀窍在于reduce而不是lambda 。 在较高的层次上,lambda会进行唯一性检查,而reduce会将列表中的项目传递给lambda函数。
为了解释该代码的lambda部分,lambda创建了一个函数对象,在这种情况下,它接受2个输入l和x并将它们传递给表达式(l.append(x) or l) if x not in l else l
添加(l.append(x) or l) if x not in l else l
围绕l.append(x)或l的花括号,以便于阅读,因为其余的只是if else语句。
如前所述,要真正了解它是如何工作的,诀窍在于reduce,而链接的python文档在解释这一点方面做得非常好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.