2013-03-10 93 views
2

我有一個問題。我需要從這個列表中獲得平均長度:(1 (2 3 4) 5 (6 7) 8 (9))。它應該是2.我不知道從哪裏開始...LISP - 如何從嵌套列表中獲取平均長度?

我試圖從(1 (2 3 4) 5 (6 7) 8 (9))得到(1 2 3 4 5 6 7 8 9)但我失敗了,因爲(reduce #'append list-name)不起作用。

我知道如何計算這一點,但我需要得到所有列表中(1(2 3 4)5(6 7)8(9)) 這樣的:

list1 = (1 5 8) 
list2 = (2 3 4) 
list3 = (6 7) 
list4 = (9) 

但我不不知道如何。

你能給我一些幫助嗎?

+1

爲什麼'(1 5 8)'? '1'不是一個列表,所以它沒有長度。同樣,'5'和'8'。你留下了'(2 3 4)','(6 7)'和'(9)',平均列表正好是2。 – 2013-03-10 13:33:59

+0

謝謝,所以我只需要(2 3 4),(6 7)和(8)。但是如何? – Klemenko 2013-03-10 13:37:40

+0

'(listp 1)'=>'NIL'。 – 2013-03-10 13:39:10

回答

1
(defun nested-lists-average-length (ls &aux (i 0) (n 0)) 
    (dolist (a ls (float (/ _______))) 
     (if (_______ a) 
     (progn (_______ i) 
       (incf n (_______ a)))))) 

Fill ... in ... the ... blanks。 :)

+0

完成!泰非常:) – Klemenko 2013-03-10 17:06:08