2017-07-22 154 views
0

的名單假設我有列表:的Python:拆分列表到列表

list = [(4, 7), (3, 7), (5, 7), (4, 6), (4, 8), (2, 7), (3, 6), (3, 8), (6, 7)] 

,我想將列表分爲長度的子列表:[2, 3, 4](這些長度可能有所不同)

生產出: sublist_list = [[(4, 7), (3, 7)],[(5, 7), (4, 6), (4, 8)], [(2, 7), (3, 6), (3, 8), (6, 7)]]

我能做到這一點的最快捷方式是什麼?提前致謝。

回答

0

簡單地迭代列表並追加到新列表中呢?

c = 0 
for sublist in list: 
    sublistlist[len(sublistlist)-1].append(sublist) 
    c += 1 
    if c % 2: 
     sublistlist.append([]) 
1
myList = [(4, 7), (3, 7), (5, 7), (4, 6), (4, 8), (2, 7), (3, 6), (3, 8), (6, 7)] 

listOfLengths = [2, 3, 4] 

def getSublists(listOfLengths,myList): 
    listOfSublists = [] 
    for i in range(0,len(listOfLengths)): 
     if i == 0: 
      listOfSublists.append(myList[:listOfLengths[i]]) 
     else: 
      listOfSublists.append(myList[listOfLengths[i-1]:listOfLengths[i-1]+listOfLengths[i]]) 
    return listOfSublists 

然後,如果你打電話getSublistsmyList(原始列表輸入)和listOfLengths(包含您的子列表的長度列表),你會得到

#In: getSublists(listOfLengths,myList) 
#Out: [[(4, 7), (3, 7)], [(5, 7), (4, 6), (4, 8)], [(4, 6), (4, 8), (2, 7), (3, 6)]] 
0

您可以通過用戶列表[ i:j] python中返回一個新列表的特性包含 list [i]列出原始列表中的[j-1]個元素。

base = 0 
Lengths =[] #list of lengths 
for num in Length: 
    sub_list.append(List[base:num+base]) 
    base += num #jump to next length 
+0

雖然這段代碼可能回答這個問題,但最好包含一些上下文,解釋它是如何工作的以及何時使用它。從長遠來看,僅有代碼的答案是沒有用的。 –