方案中的一个列表到两个列表
我有一个列表 ((x 1) (y 2) (z 3))
我想制作 2 个单独的列表:(xyz)
和 (1 2 3)
我尝试使用递归调用,使用 car 和 cdr,但没有成功。有一个简单的方法可以做到吗? 谢谢。
i have a list ((x 1) (y 2) (z 3))
and I want to make 2 seprate lists: (x y z)
and(1 2 3)
I tried using recursive call, using car and cdr, but it didnt work. there is a simple way to do it?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
cdr 返回列表的尾部,这是一个列表(假设输入是一个列表,而不是 cons 单元)。您可能想使用
cadr
((car (cdr foo))
的简写)。您可以这样做:(map
将调用将给定函数应用于列表中的每个项目)。cdr
returns the tail of the list, which is a list (assuming the input is a list, and not a cons cell). You probably want to usecadr
instead (short-hand for(car (cdr foo))
). You could do:(
map
will call apply the given function to each item in the list).或者使用 srfi-1 中的
unzip2
。Or use
unzip2
from srfi-1.将 ls 作为您的列表:(map car ls) 和 (map car (map cdr ls))
with ls as your list: (map car ls) and (map car (map cdr ls))