hallo Experten,
nochmal eine Anfängerfrage (ich finde in meinem Buch und beim googeln nur immer die grundsätzlichen Sachen, Methoden, Operatoren usw,
aber es gibt ja jede Menge mehr Sachen, die man mit einer Liste machen kann ..z.B:)
eine Liste mit vielen Ganzzahlen, vielleicht 2- oder 300, soll in jeweils 5 hintereinanderfolgende Elemente eingeteilt werden, oder in neue Listen ..
ein Element kommt hinzu, das letzte fällt weg. also i0:i4, dann i1:i5, dann i2:i6 usw
c=[1,3,44,3,55,23,7,24,6,26,78,45,22,17,37,55...]
ca =[1,3,44,3,55]
cb= [3,44,3,55,23]
...
clast=[45,22,17,37,55]
kann mir da nochmal einer helfen?
Danke im voraus
liste einteilen
Schreibe dir ein Beispiel auf Papier auf und löse das vollständig per Hand. Dann solltest du verstanden haben, wie du vorgehen musst. Mehr als Schleifen und ein wenig Nachdenken brauchst du für das Problem nicht.haeuslermartin hat geschrieben:kann mir da nochmal einer helfen?
Das Leben ist wie ein Tennisball.
-
- User
- Beiträge: 66
- Registriert: Sonntag 21. April 2013, 10:12
das habe ich schon versucht, und bin bis hierher vorgedrungen:
>>> c=[2,4,6,44,31,37,66,44,33,22,11]
>>> for i in c:
b=c[0:4]
>>> b
[2, 4, 6, 44] #ok !
>>> for i in c:
b=c[0+1:4+1]
>>> b
[4, 6, 44, 31] #die nächsten4 !
>>>
aber da muss ich ja immer einzeln definieren, ich kriege es nicht hin, alle Varianten auf einmal zu bekommen ...
sorry ...
>>> c=[2,4,6,44,31,37,66,44,33,22,11]
>>> for i in c:
b=c[0:4]
>>> b
[2, 4, 6, 44] #ok !
>>> for i in c:
b=c[0+1:4+1]
>>> b
[4, 6, 44, 31] #die nächsten4 !
>>>
aber da muss ich ja immer einzeln definieren, ich kriege es nicht hin, alle Varianten auf einmal zu bekommen ...
sorry ...
Code: Alles auswählen
c=[1,3,44,3,55,23,7,24,6,26,78,45,22,17,37,55]
c_sub5 = [c[i:i+5] for i in range(len(c)-5+1)]
-
- User
- Beiträge: 66
- Registriert: Sonntag 21. April 2013, 10:12
tausen Dank, MagBen!
-
- User
- Beiträge: 66
- Registriert: Sonntag 21. April 2013, 10:12
hallo Experten, hallo MagBen,
ein weiteres Gedankenspiel: was ist, wenn ich c_sub5 nicht von jedem unmittelbar folgenden Element haben will, sonder nur z.B. von jedem dritten,
also [1,3,44,3,55], dann [3,55,23,7,24], dann [7,24,6,26,78], usw.
c_sub5 = [c[i:i+5] for i in range(len(c[i:3])-5+1)], funktioniert nicht, -aber es muß ja der zweite Ausdruck in der Zeile sein,
der erste legt doch die Länge der Periode fest, (5 Werte), for i in range(len(c[])-5+3)] hab ich auch schon probiert, ...
hab auch schon versucht zuerst: und dann die Schleife:
b= c[::3]
for i in b:
c_sub5 = c[i:i+5] geht auch nicht ... weil das ursprüngliche c nicht mehr da ist ??
könnte ich nochmal einen Tipp bekommen?
Würde mich ja gerne mit einem Bier bedanken, aber die virtuellen schmecken ja nicht ...
ein weiteres Gedankenspiel: was ist, wenn ich c_sub5 nicht von jedem unmittelbar folgenden Element haben will, sonder nur z.B. von jedem dritten,
also [1,3,44,3,55], dann [3,55,23,7,24], dann [7,24,6,26,78], usw.
c_sub5 = [c[i:i+5] for i in range(len(c[i:3])-5+1)], funktioniert nicht, -aber es muß ja der zweite Ausdruck in der Zeile sein,
der erste legt doch die Länge der Periode fest, (5 Werte), for i in range(len(c[])-5+3)] hab ich auch schon probiert, ...
hab auch schon versucht zuerst: und dann die Schleife:
b= c[::3]
for i in b:
c_sub5 = c[i:i+5] geht auch nicht ... weil das ursprüngliche c nicht mehr da ist ??
könnte ich nochmal einen Tipp bekommen?
Würde mich ja gerne mit einem Bier bedanken, aber die virtuellen schmecken ja nicht ...
haeuslermartin: Du meinst also das `i` in Dreierschritten hochgezählt werden soll?
Code: Alles auswählen
In [153]: [c[i:i + 5] for i in range(0, len(c) - 5 + 1, 3)]
Out[153]:
[[1, 3, 44, 3, 55],
[3, 55, 23, 7, 24],
[7, 24, 6, 26, 78],
[26, 78, 45, 22, 17]]
-
- User
- Beiträge: 66
- Registriert: Sonntag 21. April 2013, 10:12
exaktement, danke,
von range 0 ausgehen und die Schrittweite hintendran,
ich wusste schon was c[1,4,3] bedeuted, aber in diesem Fall hab ich es nicht gecheckt ..
tausend Dank
von range 0 ausgehen und die Schrittweite hintendran,
ich wusste schon was c[1,4,3] bedeuted, aber in diesem Fall hab ich es nicht gecheckt ..
tausend Dank