在列表方案中添加元素
Adding Elements In a List Scheme
在 Scheme 中,我试图遍历一个列表,从列表的一部分添加每个元素。
例如,如果我有 ((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5) ()) 作为列表,我正在尝试添加第一部分 ( 1 2 5 ) 然后是第二部分 ( 1 2 ) 等等,以查看每个元素加起来是否等于特定数字。
希望这是有道理的,已尽力解释。
如果有人能帮我解决这个问题,我将不胜感激。
要添加(小)列表的数字,您可以使用 apply
:
> (apply + '(1 2 3))
6
与
相同
> (+ 1 2 3)
6
为了将此应用于子列表列表,请使用 map
:
(define (f lst)
(map (lambda (sublst) (apply + sublst))
lst))
> (f '((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5) ()))
'(8 3 6 1 7 2 5 0)
对于更大的列表,您可能希望将 apply
替换为 foldl
或等效项。
在 Scheme 中,我试图遍历一个列表,从列表的一部分添加每个元素。
例如,如果我有 ((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5) ()) 作为列表,我正在尝试添加第一部分 ( 1 2 5 ) 然后是第二部分 ( 1 2 ) 等等,以查看每个元素加起来是否等于特定数字。
希望这是有道理的,已尽力解释。
如果有人能帮我解决这个问题,我将不胜感激。
要添加(小)列表的数字,您可以使用 apply
:
> (apply + '(1 2 3))
6
与
相同> (+ 1 2 3)
6
为了将此应用于子列表列表,请使用 map
:
(define (f lst)
(map (lambda (sublst) (apply + sublst))
lst))
> (f '((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5) ()))
'(8 3 6 1 7 2 5 0)
对于更大的列表,您可能希望将 apply
替换为 foldl
或等效项。