如何访问列表中的元素?

时间:2011-08-30 19:30:04

标签: elisp

我有这个清单:

("x" "y" "z")

如何从列表中提取元素? (在这种情况下,我对列表中的第一个元素感兴趣,但我正在寻找一般解决方案。)

3 个答案:

答案 0 :(得分:11)

在尝试使用它之前,您真的应该阅读elisp或其他内容的介绍。在一些发行版中附带Emacs的Elisp手册非常好。

(nth 0 mylist)

http://www.gnu.org/software/emacs/elisp/html_node/List-Elements.html

答案 1 :(得分:1)

如果您知道元素的列表位置,请使用(nth 0 mylist),如@triplee所示。

如果要测试元素相等性(在本例中为字符串相等性),请使用:

    (car (member "y" mylist))

(member "y" mylist)返回子列表(尾部)("y" "z")car返回该子列表的第一个元素(carnth的{​​{1}}相同{ {1}}首先arg)。

如果您想要的字符串不是列表的成员,则0返回空列表member(又名nil),该列表的()返回car。所以nil是(a)用于测试列表成员资格的谓词(为当前返回member nil`)和(b)提取第一个子列表(尾部)的方法包含您寻找的元素。

答案 2 :(得分:0)

阅读List Elements部分Using Lists as SetsListsGNU Emacs Lisp Reference Manual小节。手册是你的朋友,当你对Elisp有疑问时,它应该是你应该看的第一个地方。要访问Emacs内的手册,请按 F1 i m elisp 输入,或手动浏览信息模式。

如果你写了严肃的Elisp代码,我建议安装dash包,它有很多查询和转换列表的功能。例如,如果要查找满足谓词的第一个(或最后一个)元素,请使用-first-last

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