2011-05-14 52 views
3

两个列表我有一个列表((x 1) (y 2) (z 3)),我想使2名seprate列表:(x y z)(1 2 3)一个列表在方案

我使用递归调用,使用汽车和CDR尝试,但它没有工作。有一个简单的方法来做到这一点? 谢谢。

+1

最好发布你试过的代码,这样我们可以更好地了解出了什么问题。 – cam 2011-05-14 07:13:13

回答

3

cdr返回列表的尾部,这是一个列表(假定输入是一个列表,并且不是一个缺点)。你可能想用cadr代替((car (cdr foo)))。你可以这样做:

(map car lst) ; '(x y z) 
(map cadr lst) ; '(1 2 3) 

map将调用应用给定函数列表中的每个项目)。

0

与LS作为列表:(地图汽车LS)和(地图车(地图CDR LS))

1
(apply map list lst) ; returns ((x y z) (1 2 3)) 

或使用srfi-1的unzip2