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

how to multiply the elements in two lists and save the result in a third list to return in scheme?

我想将 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)
    ....
)

有什么建议吗?

因为我们会一直走到 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)

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)