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 and not so much in 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 文档很好地解释了这一点。
我在网上找到了 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 and not so much in 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 文档很好地解释了这一点。