lambda函数解释

时间:2017-03-17 20:41:35

标签: python function lambda reduce

我在互联网上找到了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'], [])

由于 落基

2 个答案:

答案 0 :(得分:1)

我同意,它通过复杂的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"]))

希望这有帮助。

答案 1 :(得分:1)

我会使用set在列表中查找唯一商品。

unique_items = list(set(columns["Hello"]))

为了解释这段代码中发生的事情,诀窍在于reduce而在lambda中并没有那么多。在高级别,lambda执行唯一性检查,reduce是将项目从列表传递给lambda函数。

为了解释该代码的lambda部分,lambda创建了一个函数对象,在这种情况下,它接受2个输入, l x 并将它们传递给表达式{ {1}}在l.append(x)或l周围添加了大括号,以便于阅读,因为其余的只是if else语句。

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