仅删除列表中每个子列表的第一个元素的函数。例如,
测试1:
(10 (1 2 3) (90 100) 122 156)
(10 (2 3) (100) 122 156)
我知道如何从列表中删除元素,但我不知道用于从子列表中删除元素的函数
答案 0 :(得分:1)
(defun butfirst (lst)
(mapcar
(lambda (e) (if (consp e) (cdr e) e))
lst))
(butfirst '(10 (1 2 3) (90 100) 122 156))
=> (10 (2 3) (100) 122 156)
答案 1 :(得分:0)
又一个提议:没有迭代,使用递归算法。
(defun butfirst (lst)
(cond
((null lst) '())
((consp (car lst))
(cons (cdr (car lst))
(butfirst (cdr lst))))
(t (cons (car lst)
(butfirst (cdr lst))))))