Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 尝试将子列表中的所有元素与lisp中另一个列表中的元素相乘_List_Common Lisp - Fatal编程技术网

List 尝试将子列表中的所有元素与lisp中另一个列表中的元素相乘

List 尝试将子列表中的所有元素与lisp中另一个列表中的元素相乘,list,common-lisp,List,Common Lisp,我试图将一个包含n个子列表的列表与一个包含n个标量的列表相乘。它应该是这样工作的: (kmult-matrix '((3 4 2 4) (2 5 6 9) (1 -2 8 10)) '(2 3 5)) => ((6 8 4 8) (6 15 18 27) (5 -10 40 50)) 每个第n个子列表与第二个列表中的第n个标量相乘。到目前为止,我得到的是: (defun kmult-matrix (m k) (apply 'append (mapcar (lambda (x1)

我试图将一个包含n个子列表的列表与一个包含n个标量的列表相乘。它应该是这样工作的:

(kmult-matrix '((3 4 2 4) (2 5 6 9) (1 -2 8 10))   '(2 3 5)) 
=> ((6 8 4 8) (6 15 18 27) (5 -10 40 50))
每个第n个子列表与第二个列表中的第n个标量相乘。到目前为止,我得到的是:

(defun kmult-matrix (m k)
  (apply 'append (mapcar (lambda (x1)
            (mapcar (lambda (x2)
                            (mapcar (lambda (x3)
                                    (* x3 x1))
                                    x2))
                          m))
          k)))
其结果是:

((6 8 4 8) (4 10 12 18) (2 -4 16 20) (9 12 6 12) (6 15 18 27) (3 -6 24 30) (15 20 10 20) (10 25 30 45) (5 -10 40 50))

希望可以这样问,因为这是一个援助,我有感觉,我离解决方案不远了。顺便说一句,我必须使用mapcar。

这要简单得多。请记住,
mapcar
可以包含多个列表。因此:

(defun kmult-matrix (m k)
  (mapcar (lambda (list k)
            ;; inside here you get a list and 
            ;; it's corresponding multiplier k
            ...)
          m
          k))
外部映射的结果将是一个包含与子列表
m
(以及
k
中相应元素)数量相同的元素的列表。在lambda内部,您在
lst
上进行另一个映射,该映射对每个元素进行乘法。这样,内部映射会为外部映射中的每个元素生成一个列表答案