Mir*_*lov 0 lisp common-lisp in-place
我有一份清单清单:(setq xs (list (list 1 2 3) (list 4 5 6) (list 7 8 9))).我想删除每个列表中的第一个元素((2 3) (5 6) (8 9)).非破坏性的做法很容易:(mapcar 'cdr xs).但我想改变原始列表.我试过了:
(mapcar (lambda (x) (setf x (cdr x))) xs)
(mapcar (lambda (x) (pop x)) xs)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如何xs在不创建任何临时列表的情况下尽可能有效地更改每个变量列表?
用途MAP-INTO:
CL-USER 16 > (let ((s (list (list 1 2 3)
(list 4 5 6)
(list 7 8 9))))
(map-into s #'rest s))
((2 3) (5 6) (8 9))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |