我一直在各处搜索Lisp中的以下功能,但是一无所获:
(index-of item InThisList)
(replace item InThisList AtThisIndex) ;i think this can be done with 'setf'?
(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))
最佳答案
您可以使用setf
和nth
来替换和检索索引值。
(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/