假设我写了
(setf s (make-array (list 9 9) :element-type 'bit))
所以 s 是一个 9x9 的位矩阵。
我想得到 s 的第一行。我怎么得到它?
我可以做到以下几点:
(setf s (make-array 9
:element-type 'array
:initial-element
(make-array 9 :element-type 'bit)))
并通过 (svref s 0) 访问第一行。
但我想知道是否有内置方式。
(并且 2 dim 数组似乎分配了更少的字节)。
最佳答案
(defun array-slice (arr row)
(make-array (array-dimension arr 1)
:displaced-to arr
:displaced-index-offset (* row (array-dimension arr 1))))
这仅适用于行切片,IIRC 不能复制数组。写入切片将修改原始数组。
关于common-lisp - 通用 Lisp : how to access a row of a certain multi-dimension array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327237/