2013-12-09 36 views
-1

嗨,我是一個初學者python,我明天考試。我不知道該怎麼做這個問題。我知道我必須使用嵌套for循環,但是,我不能使它在語法上工作。這是一個問題,我對任何格式錯誤表示歉意。使列表不在列表中?

(list of int, int) -> list of (list of int) 

返回從1日 元素列表的一個列表,其中每個子列表是從1日的下一個NUM元素。 如果1st的長度不是num的倍數,則最終子列表將少於num個元素。

»> make_rows([2. 4, 6, 8, 10, 12],3) #Function call 

[[2, 4, 6], [8, 10, 12]] # expected output 
+4

如果你「不能使它在語法上工作」,發佈你的代碼,告訴我們你做了什麼。這裏沒有傳感器來修復隱藏代碼的語法錯誤。 :p – Amadan

+2

我相信這已經被問及(並回答)[這裏](http://stackoverflow.com/q/312443/748858) – mgilson

回答

2

這裏是一個非常詳細的解決方案,這不是很Python的,但是在細節上顯示的步驟之一會採取沒有列表理解或功能風格。

原來的海報提到for-loops,所以我想他可能需要一個迭代的方法。

def make_rows(list_of_int, num_per_row): 
    new_list = [] 
    count = 0 
    new_inner_list = [] 
    for n in list_of_int: 
     count += 1 
     new_inner_list.append(n) 
     if (count == num_per_row): 
      new_list.append(new_inner_list) 
      new_inner_list = [] 
      count = 0 
    return new_list 
+0

謝謝!簡單的解決方案,但是如果元素不能均勻分配到num_per_row – Mac

+0

不起作用,您可以在返回之前用if語句修復該問題。它可能是if(count!= 0):new_list.append(new_inner_list) – davecom

3

做這樣的事情:

def separate(lst, index): 
    new_list = [lst[i:i+index] for i in range(0, len(lst), index)] 
    return new_list 

它將返回就像這樣:

>>> print separate([1,2,3,4,5,6],3) 
[[1, 2, 3], [4, 5, 6]] 
+0

感謝您的幫助,但有沒有辦法用嵌套循環來做到這一點? – Mac

+0

爲什麼你需要使用嵌套循環? – Serial

+0

有時我們的prof職員顯式使用嵌套for循環或一個while循環 – Mac