方案在矩阵中添加列
Scheme add columns in a matrix
我正在尝试编写一个函数,它接受一个矩阵(表示为列表的列表)并将元素添加到列中,returns 一个向量(表示为一个列表):
示例:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
应该return'(15 11 3 10)
.
我尝试使用 (list-ref)
函数两次来获取每列的第一个元素,但没有成功。我正在尝试类似的东西:
(map (lambda (matrix) ((list-ref (list-ref matrix 0) 0)) (+ matrix))
如果我们忘记索引并考虑高阶过程,解决方案很简单,试试这个:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
(apply map + sample)
=> '(15 11 3 10)
说明:map
可以将多个列表作为参数。如果我们 apply
它到 sample
(这是一个列表的列表)并传递 +
作为进行映射的过程,它将依次从每个列表中取出一个元素并添加他们,生成一个包含结果的列表 - 有效地添加矩阵中的所有列。
我正在尝试编写一个函数,它接受一个矩阵(表示为列表的列表)并将元素添加到列中,returns 一个向量(表示为一个列表):
示例:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
应该return'(15 11 3 10)
.
我尝试使用 (list-ref)
函数两次来获取每列的第一个元素,但没有成功。我正在尝试类似的东西:
(map (lambda (matrix) ((list-ref (list-ref matrix 0) 0)) (+ matrix))
如果我们忘记索引并考虑高阶过程,解决方案很简单,试试这个:
(define sample
'((2 6 0 4)
(7 5 1 4)
(6 0 2 2)))
(apply map + sample)
=> '(15 11 3 10)
说明:map
可以将多个列表作为参数。如果我们 apply
它到 sample
(这是一个列表的列表)并传递 +
作为进行映射的过程,它将依次从每个列表中取出一个元素并添加他们,生成一个包含结果的列表 - 有效地添加矩阵中的所有列。