Map 映射和反向子列表方案

Map 映射和反向子列表方案,map,scheme,reverse,Map,Scheme,Reverse,我想写一个函数来反转列表中的所有子列表(但只反转顶层的子列表)。在使用map之前,我试图通过执行以下操作来确定是否可以对列表进行过滤并执行反转 (筛选器列表?(反向“((12)9(16 5)64)),但这正好反向到((16 5)(1 2))。 我正在寻找这样的输出:((21)9(516)64)) 我应该使用map和reverse,但我无法从那里开始。很简单,在尝试反向之前,您只需询问每个项目是否为列表: (define lst '((1 2) 9 (16 5) 64)) (map (lambd

我想写一个函数来反转列表中的所有子列表(但只反转顶层的子列表)。在使用
map
之前,我试图通过执行以下操作来确定是否可以对列表进行
过滤
并执行
反转
(筛选器列表?(反向“((12)9(16 5)64))
,但这正好反向到
((16 5)(1 2))
。 我正在寻找这样的输出:
((21)9(516)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
在这种情况下不起作用,因为您对处理输入列表中的所有元素感兴趣,即使只需要反转实际列表。

如果这是家庭作业,则应将其标记为这样。@AdeqHero不客气!如果这个答案对你有帮助,请考虑它的正确,点击左边的检查标记。