2011-08-30 119 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