0

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

有什么建议么?

4

2 回答 2

2

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)
于 2021-06-03T13:24:14.287 回答
0

因为我们会一直到l1用完并且不考虑l2Python 版本中的长度,所以我建议在 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)
于 2021-06-03T12:42:38.453 回答