2013-07-03 108 views
0

我有這樣的列表。我想知道是否有任何快速的方法來創建子列表呢?分割列表Python

list = [1,2,3,4,5,6,7,8,.....] 

什麼是蟒蛇列表分成子列表這個最好的方法是什麼?

1. [(1, 2), (3, 4), (5, 6), ...] 
2. [(1, 2, 3), (4, 5, 6), ...] 
3. [(1,2,3,4),(5,6,7,8), ....] 
+2

3不是任何一種原始列表的「拆分」。 – orlp

+0

這裏有沒有某種模式或程序分割?或者你只想知道創建列表子目錄的操作? – woemler

+0

是的。我只是以列表爲例..沒有模式,只是尋找一種方法來做到這一點.. – user2510612

回答

4

通過在列表中循環遍歷每個子列表中所需元素的數量(例如range(0, len(a), n)),您可以非常容易地達到此目的。您可以使用索引提取每個子列表所需的元素(例如a[i:i+n])。例如:

def group(a, n): 
    return [tuple(a[i:i+n]) for i in range(0, len(a), n)] 


print group([1, 2, 3, 4, 5, 6], 2) 
# [(1, 2), (3, 4), (5, 6)] 

print group([1, 2, 3, 4, 5, 6], 3) 
# [(1, 2, 3), (4, 5, 6)] 

print group([1, 2, 3, 4, 5, 6, 7, 8], 4) 
# [(1, 2, 3, 4), (5, 6, 7, 8)] 
0

嘗試numpy.reshape

>>> import numpy 
>>> a = range(1,7) 
>>> a 
[1, 2, 3, 4, 5, 6] 
>>> numpy.reshape(a,(3,2)) 
array([[1, 2], 
     [3, 4], 
     [5, 6]]) 
>>> numpy.reshape(a,(2,3)) 
array([[1, 2, 3], 
     [4, 5, 6]]) 

reshape取「陣列狀」對象和包含行和新的矩陣的列數的元組。