You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Common Lisp嵌套列表迭代改造:支持嵌套的列表反转与元素计数实现

Common Lisp嵌套列表适配函数修改方案

原有代码问题说明

  • 仅处理列表顶层元素,未对子列表做递归判断,无法支持嵌套场景
  • 函数内部使用defvar定义变量,会创建全局可修改的特殊变量,多次调用函数会出现值污染,建议用let做局部变量绑定
  • countAppearance中用=做比较,仅支持数值类型,改用eql适配更多数据类型

修改后实现代码

countAppearance函数

(defun countAppearance (liste element)
  (let ((count 0))
    (loop for item in liste do
          (cond
            ;; 当前元素是列表,递归统计子列表中的出现次数
            ((listp item)
             (setf count (+ count (countAppearance item element))))
            ;; 当前元素匹配目标,计数+1
            ((eql item element)
             (setf count (+ count 1)))))
    count))

效果验证

调用(countAppearance '(1 (3 5) (3 7 8) 2) 3),返回结果为2,符合预期。


reverseList函数

(defun reverseList (liste)
  (let ((reversedList (list)))
    (loop for i downfrom (- (length liste) 1) to 0 do
          (let ((current-item (nth i liste)))
            ;; 当前元素是列表,先递归翻转子列表再加入结果
            (setf reversedList (append reversedList
                                       (list (if (listp current-item)
                                                 (reverseList current-item)
                                                 current-item))))))
    reversedList))

效果验证

调用(reverseList '(1 (2 3))),返回结果为((3 2) 1),符合预期。

内容的提问来源于stack exchange,提问作者gokbeykeskin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:04