2017-07-22 3 views
0

Nehmen wir an, ich Liste haben:Python: Split-Liste in die Liste der Listen

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

Dass ich die Liste in Unterlisten von Längen teilen möchten: [2, 3, 4] (diese Längen variieren)

zu produzieren: sublist_list = [[(4, 7), (3, 7)],[(5, 7), (4, 6), (4, 8)], [(2, 7), (3, 6), (3, 8), (6, 7)]]

Was ist der schnellste Weg, dass ich das tun kann? Danke im Voraus.

Antwort

0

Wie wäre es, die Liste einfach zu wiederholen und an die neuen Listen anzuhängen?

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 

Dann, wenn Sie getSublists auf myList (original Listeneingabe) aufrufen und listOfLengths (eine Liste die Länge Ihrer Unterlisten enthält), erhalten Sie

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

Sie können Benutzerliste [ i: j] Funktion in Python, die eine neue Liste zurückgibt enthält Liste [i], um [j-1] Elemente der ursprünglichen Liste aufzulisten.

+0

Während dieser Code die Frage beantworten kann, wäre es besser, einige Kontext einzubeziehen, zu erklären, wie es funktioniert und wann es zu verwenden ist. Nur-Code-Antworten sind auf lange Sicht nicht nützlich. –