gpt4 book ai didi

python - 在 Python 中使用不同的相等性测试删除重复项

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:37 24 4
gpt4 key购买 nike

我正在寻找类似于 nubBy in Haskell 的 Python 函数,它删除了重复但具有不同的相等性测试。

该函数将接受相等性测试和列表作为参数,并返回没有重复元素的列表。

示例:

In [1]: remove(lambda x, y: x+y == 12, [2, 3, 6, 9, 10])
Out[1]: [2,3,6]

例如,这里的 (2 and 10) 和 (9 and 3) 是重复的。我不关心输出是 [10, 9, 6] 还是 [2, 3, 6]

Python 中是否有等效的内置函数?如果不是,有效实现它的最佳方法是什么?

最佳答案

没有内置方法(因为用例相当深奥),但您可以轻松编写一个:

def removeDups(duptest, iterable):
res = []
for e in iterable:
if not any(duptest(e, r) for r in res):
res.append(e)
return res

现在,在控制台中:

>>> removeDups(lambda x,y: x+y == 10, [2,3,5,7,8])
[2, 3, 5]
>>> removeDups(lambda x,y: x+y == 10, [2,3,6,7,8])
[2, 3, 6]
>>> removeDups(lambda x, y: x+y == 12, [2, 3, 6, 9, 10])
[2, 3, 6]

关于python - 在 Python 中使用不同的相等性测试删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com