λ函数说明



我在互联网上找到了lambda函数。我正在使用它并正确获取输出。但是我需要知道解释,以便我可以根据我的要求更改功能。

此函数正在删除我拥有的列表中的任何重复数据。但我无法弄清楚 L 和 X 值是如何发生的。还有 l.append(x( 或 l 在这里做什么。它会在什么条件下选择哪一个。请解释一下。让我们假设列["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(或l周围添加了大括号,以使其更易于阅读,因为其余的只是一个if else语句。

如前所述,要真正了解它是如何工作的,诀窍在于reduce,链接的python文档很好地解释了这一点。

最新更新