gpt4 book ai didi

functional-programming - Lisp 中的列表操作

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

我一直在到处寻找 Lisp 中的以下功能,但一无所获:

  1. 在列表中找到某物的索引。示例:

    (index-of item InThisList)
  2. 替换列表中特定位置的内容。示例:

    (replace item InThisList AtThisIndex) ;i think this can be done with 'setf'?
  3. 返回特定索引处的项目。示例:

    (return InThisList ItemAtThisIndex)

到目前为止,我一直在用自己的函数伪造它。我想知道我是否只是在为自己创造更多的工作。

这就是我伪造数字 1 的方式:

(defun my-index (findMe mylist)
(let ((counter 0) (found 1))
(dolist (item mylist)
(cond
((eq item findMe) ;this works because 'eq' checks place in memory,
;and as long as 'findMe' was from the original list, this will work.
(setq found nil)
(found (incf counter))))
counter))

最佳答案

您可以使用 setfnth 按索引替换和检索值。

(let ((myList '(1 2 3 4 5 6)))
(setf (nth 4 myList) 101); <----
myList)

(1 2 3 4 101 6)

要按索引查找,您可以使用 the position function .

(let ((myList '(1 2 3 4 5 6)))
(setf (nth 4 myList) 101)
(list myList (position 101 myList)))

((1 2 3 4 101 6) 4)

我找到了所有这些 in this index of functions .

关于functional-programming - Lisp 中的列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45227/

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