4

我正在尝试创建一个函数two arguments x and y来创建一个list of y times repeated elements X但我对如何执行它或使用哪种方法感到困惑我认为列表压缩可以执行但我想要一个更短更简单的方法例如我希望我的简单代码像这个

if y = 4
 and x = 7
 result is list of elements (7, 7, 7, 7)

我该如何去做任何想法?书籍链接或任何能给我线索的东西我试过搜索但我不走运

4

2 回答 2

22

您可以将make-list初始元素键一起使用:

CL-USER> (make-list 10 :initial-element 8)
   (8 8 8 8 8 8 8 8 8 8)

虽然 Óscar answer 提供了一个很好的例子来说明如何自己编写这样的函数。

于 2012-11-18T16:29:24.227 回答
0

试试这个,它在 Scheme 中,但总体思路应该很容易转换为 Common Lisp:

(define (repeat x y)
  (if (zero? y)
      null
      (cons x
            (repeat x (sub1 y)))))

编辑:

现在,在 Common Lisp 中:

(defun repeat (x y)
  (if (zerop y)
      nil
      (cons x
            (repeat x (1- y)))))
于 2012-11-18T16:28:59.393 回答