2013-06-27 106 views
0
def group(l,size): 
    length = len(l) 
    new = [] 
    for i in range(0,length): 
     for j in range(i,size): 
      new[i].append(l[j]) 
    print new 

上述函數組(列表,大小)將列表和分割成給定大小的較小列表。將列表拆分爲更小的列表

我需要像這樣

輸入:組([1,2,3,4,5,6,7,8,9],3)
輸出:[[1,2 ,3],[4,5,6],[7,8,9]]

但上述代碼的問題是顯示索引超出範圍。代碼中出現了什麼問題? 如何將元素追加到列表中?

+1

如何附加到不存在的列表? –

+0

new [i]不存在 –

+0

是python中的新功能,需要完成哪些操作? – vr22

回答

5

使用切片。

>>> def group(l, size): 
...  return [l[i:i+size] for i in range(0, len(l), size)] 
... 
>>> group([1, 2, 3, 4, 5, 6, 7, 8, 9], 3) 
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
0

嘗試:

def group(l,size): 
    length = len(l) 
    new = [] 
    for i in range(0, length/size): 
     new.append([]) 
    for i in range(0,len(new)): 
     for j in range(i*size,(i*size)+size): 
      new[i].append(l[i+j]) 
    print new 

編輯: 不,不這樣做。使用切片,如falsetru illustrates

-1

粗糙的解決辦法是這樣的:]

def group(l,size): 
    length = len(l) 
    newlist = [] 
    newgroup = [] 
    j = 0 
    for i in range(0,length): 
     if(j<size - 1): 
      j += 1 
      newgroup.append(l[i]) 
     else: 
      j = 0 
      newgroup.append(l[i]) 
      newlist.append(newgroup) 
      newgroup = [] 
    if(newgroup != []): 
     newlist.append(newgroup) 
    return newlist 

print(group([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 3)) 

結果:[[1,2,3],[4,5,6],[7,8,9],[10,11] ]

+0

爲什麼-1?我沒有測試,但如果它產生了給定的結果,這似乎是一個有效的解決方案。 (但相當複雜) – glglgl