我想编写一个反转列表中的所有子列表(但只有顶级子列表)的函数。我试图弄清楚我是否可以只使用filter
这个清单,然后使用map
做map
做 (filter list? (reverse '((1 2) 9 (16 5) 64)))
,但这只是逆转到((16 5) (1 2))
。 我在寻找一个输出:((2 1) 9 (5 16) 64))
。映射和反向子列表
我应该使用map
和reverse
,但我只是无法在那里开始。
我想编写一个反转列表中的所有子列表(但只有顶级子列表)的函数。我试图弄清楚我是否可以只使用filter
这个清单,然后使用map
做map
做 (filter list? (reverse '((1 2) 9 (16 5) 64)))
,但这只是逆转到((16 5) (1 2))
。 我在寻找一个输出:((2 1) 9 (5 16) 64))
。映射和反向子列表
我应该使用map
和reverse
,但我只是无法在那里开始。
这很简单,你只需要问,如果每个项目是试图扭转之前的列表:
(define lst '((1 2) 9 (16 5) 64))
(map (lambda (e)
(if (list? e) (reverse e) e))
lst)
> '((2 1) 9 (5 16) 64)
filter
不会在这种情况下工作,因为你有兴趣处理所有输入列表中的元素,即使只有实际的列表需要颠倒。
非常感谢! – 2012-07-19 20:53:51
@AdeqHero欢迎您!如果这个答案对你有帮助,请点击左边的复选标记,考虑接受它是否正确 – 2012-07-19 20:56:48
如果这是家庭作业,它应该被标记为这样。 – crashmstr 2012-07-19 18:58:40