我想編寫一個反轉列表中的所有子列表(但只有頂級子列表)的函數。我試圖弄清楚我是否可以只使用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