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

如何在Common Lisp中同时使用多个变量进行循环?

在Common Lisp的LOOP中同时绑定多个变量

要实现你想要的同时绑定多个变量的循环效果,有几种直接的方法:

方法1:遍历分组后的子列表

如果你的源列表是扁平结构,可以先将其拆分为包含多个目标元素数量的子列表,再通过for (i j k) in语法直接绑定变量:

; 直接使用预分组的列表
(loop for (i j k) in '((1 2 3) (4 5 6)) do
  (format t "i=~a, j=~a, k=~a~%" i j k))

如果需要自动拆分扁平列表,也可以用loop结合索引步进实现:

(let ((flat-list '(1 2 3 4 5 6)))
  (loop for idx from 0 below (length flat-list) by 3 do
    (let ((i (nth idx flat-list))
          (j (nth (+ idx 1) flat-list))
          (k (nth (+ idx 2) flat-list)))
      (format t "i=~a, j=~a, k=~a~%" i j k))))

方法2:用on遍历并绑定连续元素

通过for (i j k) on语法,可以直接从扁平列表中一次获取连续的三个元素,同时添加while k来避免剩余元素不足时出现nil:

(loop for (i j k) on '(1 2 3 4 5) while k do
  (format t "i=~a, j=~a, k=~a~%" i j k))

另外你提到的with语句,它的作用是定义循环内部的局部变量,而非绑定遍历过程中的元素,所以不适合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:22:15