分解drRacket中的点列表

时间:2013-04-29 11:21:00

标签: scheme racket

我有一个表格列表:

((1.10) (2.980) (3.567) (4.0)...(1000.87 ))

并且,为了能够在功能图中使用它们,我想提取两个子列表,其中x和y分开。所以我想要那个:

x:(1 2 3 4 ... 1000)

y:(10 980 567 0 ... 87)

对于第一个我只使用(define x ( build-list 1000 (lambda (x) (+ x 1 ))) 但对于第二个我没有找到任何帮助我的功能:(

我想我可以用一个使用汽车和cdr的循环来制作一个程序,但我是一个新的球拍,我不能做一个简单的循环(我真的很想念其他语言的简单) 那么有没有人知道一个可以解决我问题的已经建立的功能呢?

1 个答案:

答案 0 :(得分:3)

看起来你的列表是由小数组成,而不是点缀对,正如我想你想要的那样。所以它应该在数字和点之间有空格。但是,这是一个小问题。

对于您的主要问题,最简单的事情可能是将“car”和“cdr”分别映射到您的列表中:

(define list-of-points '((1 . 10) (2 . 980) (3 . 567) (4 . 0) ... (1000 . 87)))
(define x (map car list-of-points))
(define y (map cdr list-of-points))

查看documentation on map了解详情。