繁体   English   中英

lambda函数说明

[英]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个输入lx并将它们传递给表达式(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM