2013-04-08 5 views
8

Ich habe eine Liste von mehreren ganzen Zahlen und Strings ['-200', '0', '200', '400', 'grün', '0', '0', '200', '400', ' gelb ',' 200 ',' 0 ',' 200 ',' 400 ',' rot '] Ich habe Schwierigkeiten, die Liste alle 5 Elemente zu trennen und eine neue Liste mit nur 5 Elementen zu erstellen. Allerdings möchte ich nicht 3 verschiedene Listen, ich will nur eine, die jedes Mal ändert, wenn ein neues 5 Elemente durchläuft.Wie können Sie eine Liste alle x Elemente aufteilen und diese Anzahl an Elementen zu einer neuen Liste hinzufügen?

Antwort

19

Sie wollen so etwas wie:

composite_list = [my_list[x:x+5] for x in range(0, len(my_list),5)] 

print (composite_list) 

Ausgang:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 

Was meinst du mit einem "neuen" 5 Elemente?

Wenn Sie zu dieser Liste anhängen möchten, können Sie tun:

composite_list.append(['200', '200', '200', '400', 'bluellow']) 
1

Sie es in einem einzigen Satz tun könnte wie

>>> import math 
>>> s = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red'] 
>>> [s[5*i:5*i+5] for i in range(0,math.ceil(len(s)/5))] 

Dann sollte der Ausgang sein:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 
+0

Leider ~ falsch verstehen. Wird es sofort aktualisieren. – Sheng

0

Ich glaube, dass Sie 1 neue Liste erstellen müssen, aber wenn ich richtig verstanden habe, möchten Sie eine verschachtelte Liste mit 5 Elementen in jedem Unterliste.

könnten Sie versuchen, die folgenden:

l = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red'] 

new = [] 
for i in range(0, len(l), 5): 
    new.append(l[i : i+5]) 

Dies wird Ihre erste Liste Schritt für Schritt durch, ‚l‘, und Gruppe 5 Elemente zu einer Unterliste in neu. Ausgang:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 

this helps

Verwandte Themen