2011-05-14 51 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