我遇到了一个问题Python - Removing duplicates in list only by using filter and lambda,其中OP询问如何使用filter
和lambda
函数从Python列表中删除重复元素。在
这让我想知道,从理论的角度来看,是否可以只使用lambda
函数从Python列表中删除重复项?在
如果是这样,我们怎么能做到呢?在
在本例中,“removetheduplicates”意味着“在原始列表中只保留一个元素的出现”,因此[1,2,1,3,1,4]
应该变成{
另外,我们的目标是只写一个lambda
,因此代码将是一行代码,如:
lambda l: """do something that returns l without duplicates"""
不能使用外部变量。在
另外,对于上述问题,不允许任何“花哨”的东西,尤其是set
函数,以及reduce
,map
。。。在
基本上,不应该调用其他函数,即使是内置函数。在
从理论的角度来看,如果一个计算问题需要一个输入和一个输出而没有副作用,lambda演算可能可以解决它(更一般地说,lambda演算是图灵完备的,cfwikipedia)。在
现在对于实现,下面的
lambda
函数接受一个list参数,并返回一个已删除所有重复项的列表:以下是未包装的版本:
^{pr2}$该函数包含以下递归函数的
lambda
版本:为了模拟递归调用,等效的
lambda
将另一个函数作为参数,该函数本身将是:然后,另一个
lambda
调用前一个函数,将自身作为参数传递(除了列表):最后,一个外部的
lambda
封装了所有内容,它只接受一个列表作为参数。在相关问题 更多 >
编程相关推荐