gpt4 book ai didi

list - Elisp:如何查找列表重复项

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:41 24 4
gpt4 key购买 nike

我正在使用它来查找列表重复项:

(defun have-dups (x)
(let ((dups (copy-tree x)))
(if (eq (length (delete-dups dups)) (length x))
nil
t)))

(have-dups (list 1 2 3 3)) ;=> t
(have-dups (list 1 2 3)) ;=> nil

考虑到 copy-treedelete-dups 的开销,可能有更好的方法。

最佳答案

使用哈希表,一旦你发现一个元素已经存在于哈希表中,你就知道你有重复项:

(defun has-dup (list)
(block nil
(let ((hash (make-hash-table :test 'eql)))
(map ()
(lambda (item)
(if (gethash item hash)
(return t)
(setf (gethash item hash) t)))
list))))

关于list - Elisp:如何查找列表重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49005589/

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