我有这个清单:
("x" "y" "z")
如何从列表中提取元素? (在这种情况下,我对列表中的第一个元素感兴趣,但我正在寻找一般解决方案。)
答案 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
返回该子列表的第一个元素(car
与nth
的{{1}}相同{ {1}}首先arg)。
如果您想要的字符串不是列表的成员,则0
返回空列表member
(又名nil
),该列表的()
返回car
。所以nil
是(a)用于测试列表成员资格的谓词(为当前返回member
nil`)和(b)提取第一个子列表(尾部)的方法包含您寻找的元素。
答案 2 :(得分:0)
阅读List Elements部分Using Lists as Sets的Lists和GNU 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