【发布时间】:2017-01-07 17:08:28
【问题描述】:
我遇到了Python - Removing duplicates in list only by using filter and lambda 问题,其中 OP 询问如何仅使用 filter 和 lambda 函数从 Python 列表中删除重复元素。
这让我想知道,从理论上讲,是否有可能仅使用 lambda 函数从 Python 列表中删除重复项?
如果是这样,我们该怎么做?
在这种情况下,“删除重复项”意味着“保留原始列表中存在的每个元素只出现一次”,因此 [1,2,1,3,1,4] 应该变为 [1,2,3,4]。
另外,我们的目标是只写一个lambda,所以代码会是单行的:
lambda l: """do something that returns l without duplicates"""
不得使用外部变量。
此外,关于上述问题,任何“花哨”都是不允许的,尤其是set函数,以及reduce、map...
基本上,不应该调用其他函数,即使是内置函数。
【问题讨论】:
-
只有 lambda 函数,没有临时占位符/容器?
-
@wwii 编辑了我的问题;是的,代码必须只包含在一个 lambda 函数中,因此不允许使用额外的容器。
-
有时这有点棘手,但通常你可以找到一种方法来编写函数的 lambda 版本,无论它可能多么混乱或不可读。
-
@wwii 检查我的答案,看看它有多乱 :)
-
lambda a: list(set(a))??