0

我有一个表格的点列表:

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

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

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

是的:(10 980 567 0 ... 87)

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

我想我可以制作一个使用 car 和 cdr 的循环的程序,但我是球拍中的新手,我不能做一个简单的循环(我真的很怀念另一种语言的简单 for 和 while)所以有人知道吗?已经制定了可以解决我的问题的功能?

4

1 回答 1

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))

查看地图上的文档以获取更多信息。

于 2013-04-29T11:32:26.733 回答