List 在方案中的列表中添加或更新元素
我有一个表格'((1'())(23)(34)(4'())中的列表,我想更新它。 例如,其中第一个值int 2被设置为第二个值5 结果是这样的 "(1)(2 5)(3 4)(4)) 我心里有这样的想法,但我不知道如何实施。。 我还想将结果插入到我使用的全局列表中 (定义(更新ls var1 var2) (相等?(var1(汽车(汽车ls)))(;将元素添加到列表)(更新(cdr ls) var1 var2) 假设:List 在方案中的列表中添加或更新元素,list,lisp,scheme,racket,List,Lisp,Scheme,Racket,我有一个表格'((1'())(23)(34)(4'())中的列表,我想更新它。 例如,其中第一个值int 2被设置为第二个值5 结果是这样的 "(1)(2 5)(3 4)(4)) 我心里有这样的想法,但我不知道如何实施。。 我还想将结果插入到我使用的全局列表中 (定义(更新ls var1 var2) (相等?(var1(汽车(汽车ls)))(;将元素添加到列表)(更新(cdr ls) var1 var2) 假设: 只有一个子列表以2开头(我们要替换的子列表) 输入是一个子列表(不是引用列表,就像
2
开头(我们要替换的子列表)map
创建一个新的列表,并进行适当的更新:
(define lst '((1 '()) (2 3) (3 4) (4 '())))
(map (lambda (e)
(if (= (car e) 2) ; check if this is the pair we want to update
(list 2 5) ; if so, create a new modified sublist
e)) ; else keep the sublist as it comes
lst)
=> '((1 '()) (2 5) (3 4) (4 '()))
Oscar回答的一个问题是,如果要将列表用作全局变量,则必须在每次函数调用时传递它,或者在生成一个全新的列表后使用set 这里可以找到一个简单的表实现