我有一个2D数组,但是我可以找到存储在数组中的某个元素的列索引吗?
假设我要查找的元素存储在第2行,但我不知道它的列索引。但是我如何找到列索引?
例如,我有一个2D数组和一个元素列表,如
L = (A B C)
我知道“A”存储在数组的第2行中,现在我想在数组中找到“A”的列索引,所以我试过
(eval (first L))
但是出现了错误消息
The variable A is unbound.
谢谢。
答案 0 :(得分:3)
这应该有效(对于名为*a*
的数组):
(position 'a
(make-array (array-dimension *a* 1)
:displaced-to *a*
:displaced-index-offset (array-row-major-index *a* 2 0)))
移位数组就像现有数组的替代视图。此代码创建一个位移数组,该数组是一个查看数组第二行的向量,然后使用position
查找该元素的索引。
答案 1 :(得分:0)
我认为任何内置函数都不能做到这一点。尝试这样的事情:
(defun column-position (array row item &key (test #'eql))
(loop for i below (array-dimension array 1)
when (funcall test (aref array row i) item)
do (return i)))