LISP如何从列表中删除某个索引处的元素

时间:2017-05-19 10:42:46

标签: list lisp element

我试图学习LISP。我绕过了各种功能,我想用一些来测试自己。

我试图编写一个可以从给定索引中的列表中删除元素的函数。

这看起来非常简单,但我无法做到。

示例:我有列表(20 8 13 10),我想删除索引2处的数字。

我怎么会这样做?

1 个答案:

答案 0 :(得分:1)

这很容易。这是基本情况:

(remove-nth 0 '(2 3)) ; => (3)

默认情况:

(remove-nth 1 '(1 2 3))         ; ==
(cons 1 (remove-nth 0 '(2 3)))

你唯一要做的就是实际实现它!

还有第三种情况。如果列表是nil怎么办?从最严格的意义上说,你不能完成这项工作,你应该发出错误信号,或者也许没有任何事情要做,所以可以将它作为评估为'()的基本案例。 (remove-nth 5 '(1 2)) ; ==> (1 2)