gpt4 book ai didi

lisp - 普通口齿不清 : loop through pairs of a list

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

我有一个长度可以被二整除的列表,我正在寻找类似于 this 的答案的内容。问题:

(loop for (a b) on lst while b
collect (+ a b))

但是元素之间存在重叠:

(1 2 3 4 5) -> (3 5 7 9)

相加 1 和 2,然后相加 2 和 3 等等。

因为我有一个像 (1 2 3 4) 这样的列表,所以我正在寻找类似的东西

((1 2) (3 4))

作为输出。有没有办法让循环在列表中正确执行?另一种解决方案。

最佳答案

像这样的东西应该可以工作:

(let ((list '(1 2 3 4)))
(loop :for (a b) :on list :by #'cddr :while b
:collect (cons a b)))

还有一个更详细的变体:

(let ((list '(1 2 3 4)))
(loop :for a :in list :by #'cddr
:for b :in (cdr list) :by #'cddr
:collect (cons a b)))

关于lisp - 普通口齿不清 : loop through pairs of a list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028348/

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