我正在尝试编写一个带矩阵(表示为列表列表)的函数,并在列中添加元素并返回一个向量(表示为列表):
示例:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
应该返回'(15 11 3 10)
。
我试图两次使用(list-ref)
函数来获取每列的第一个元素而没有运气。我正在尝试类似的事情:
(map (lambda (matrix) ((list-ref (list-ref matrix 0) 0)) (+ matrix))
答案 0 :(得分:3)
如果我们忘记索引并考虑更高阶的程序,解决方案很简单,试试这个:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
(apply map + sample)
=> '(15 11 3 10)
说明:map
可以将多个列表作为参数。如果我们apply
将其sample
(列表列表)并传递+
作为执行映射的过程,则会依次从每个列表中获取一个元素并添加它们,生成一个包含结果的列表 - 有效地,添加矩阵中的所有列。