2011-11-28 58 views
1

我有一個2D數組,但我可以找到存儲在數組中的某個元素的列索引嗎?
假設我正在查找的元素存儲在第2行,但我不知道它的列索引。但是,我如何找到列索引?
例如,我有一個2D陣列和元件,諸如列表,如何在Lisp中查找二維數組中的元素的列索引?

L = (A B C) 

,我知道「A」被存儲在第2行中的陣列,現在我想找到該列指數在數組 「A」,所以我試圖

(eval (first L)) 

但被賦予

The variable A is unbound. 

錯誤消息謝謝。

+4

你爲什麼試圖爲此使用'EVAL'?它與你試圖做的事無關 – finnw

回答

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))) 
3

這應該工作(對於稱爲*a*數組):

(position 'a 
      (make-array (array-dimension *a* 1) 
         :displaced-to *a* 
         :displaced-index-offset (array-row-major-index *a* 2 0))) 

甲移位陣列是類似的替代視圖到現有的陣列。此代碼創建一個位移數組,它是一個查看數組第二行的向量,然後使用position來查找其中元素的索引。

相關問題