如何将两个列表中的元素相乘并将结果保存在第三个列表中以返回方案?

问题描述

我想将scheme中2个列表的元素相乘,并将每次相乘的结果保存在函数返回的第三个列表中

并且..列表将始终具有相同的大小

python 中的想法是这样的

def multi_elements( l1,l2):
    save = []
    for i in range(len(l1)):
      save.append(l1[i] * l2[i])
    return save

a = [ 1,2,3]
b = [ 2,3,4]

c = multi_elements(a,b)

print("C= ",c)

=>C= [2,6,12]

我想做同样的事情,但在一个名为相同的函数中的方案 我只有3天的学习计划

(def (multi-elements list1 list2)
    ....
)

有什么建议吗?

解决方法

map 过程可用于映射多个列表。提供给 map 的过程应该接受与列表一样多的参数。您可以使用 * 映射两个列表以获得您想要的结果:

> (map * '(1 2 3) '(2 3 4))
(2 6 12)

由于 * 接受任意数量的参数,您还可以以相同的方式映射三个(或更多)列表:

> (map * '(1 2 3) '(2 3 4) '(2 2 2))
(4 12 24)
,

由于我们将一直使用到 l1 用完并且不考虑 Python 版本中 l2 的长度,因此我建议在 Scheme 中实现以下实现:

(define (multi-elements a b)
    (if (null? a)
        '() ;; We are at the end of the a list
        (cons (* (car a) (car b))  
              (multi-elements (cdr a) (cdr b)))))

例如:

(define x (list 1 2 3))
(define y (list 2 3 4))
(multi-elements x y)
;; Returns (2 6 12)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...