2011-08-30 163 views
-1

我有這樣的名單:如何訪問列表中的元素?

("x" "y" "z") 

我如何提取從列表中選擇元素? (在這種情況下,我很感興趣,在列表中的第一個元素,但我正在尋找一個通用的解決方案。)

回答

1

如果你知道該元素列表中的位置,然後使用(nth 0 mylist),如@triplee表示。

如果你想測試的元素相等(在這種情況下,字符串相等),然後使用此:

(car (member "y" mylist)) 

(member "y" mylist)返回子列表(尾)("y" "z")car返回子列表的第一個元素(car是一樣的nth0第一ARG)。

如果你希望字符串不在列表中的一員,那麼member返回空列表nil(又名()),並將該列表的car返回nil。所以member是測試列表成員都(一)謂詞(返回nil' for not present and non- nil`的存在)和(b)的方式來提取第一子列表(尾),其中包含你所尋求的元素。

0

閱讀小節List ElementsGNU Emacs Lisp Reference Manual部分ListsUsing Lists as Sets。手冊是你的朋友,當你對Elisp有疑問時,這是你應該看的第一個地方。通過按F1訪問手動Emacs中,查看它使用信息系統我米elisp輸入,或手動周圍信息模式進行導航。

如果你寫嚴肅的elisp代碼,我建議安裝dash包,裏面有很多的功能,查詢和轉換列表。例如,如果你想找到一個滿足謂詞第一(或最後一個)元素,使用-first-last

(-first 'evenp '(1 2 3 4 5 6)) ; 2 
(-last 'evenp '(1 2 3 4 5 6)) ; 6