我将输入N作为LISP中一个2D矩阵的行数,其中每个行最多可以包含5个元素。所以我就这样做现在对于每个箭头,它可以有0到5之间的任意数量的元素所以我做了一个单独的数组来存储每一行2D矩阵的大小,每当我在其中插入任何元素时都会增加它的大小

(setq myMatrix (make-array (list N 5)))

(setq sizeArray (make-list N:initial-element 0))

现在,当需要向任何行添加元素时,我将输入,而行具有最大元素,或者用户自己退出,以在该行中输入更多元素。要向第I行添加元素,我执行以下操作:
(setf (aref myMatrix i (nth i sizeArray)) "Hi")
// Hi is just for example here
(setf (nth i sizeArray) (+ 1 (nth i sizeArray)))

现在我想把这个矩阵的第行打印成这样:
Item 1 : myMatrix[i][0]
Item 2 : myMatrix[i][1]..and so on

直接说,我要第I行的第j个值我们怎么能用lisp把这个弄出来?

最佳答案

因为您使用的是一个列表数组,那么:

(defun element-of-matrix (matrix i j)
  (nth j (aref matrix i)))

07-26 01:25