Python: Innerhalb einer Liste nur bestimmte Elemente ausgeben (siehe Beschreibung)?
Guten Tag,
ich habe bei der Ausgabe meines Porgrammes ein kleines Problem.
Nehmen wir als Beispiel an die Ausgabe ist folgende Liste:
liste_ausgabe = [425, 426, 427, 428, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451]
Nun möchte ich davon eigentlich nur die "425" und die "441" ausgegeben haben... das heißt nur die Elemente, bei denen sich die mittlere Zahl im Vergleich zum vorherigen Element ändert...
In diesem Fall soll also das erste Element (quasi liste_ausgabe[0]) und die "441" ausgegeben werden, da bei der 441 sich ja die mittlere Zahl (die 4) im Vergleich zu der vorherigen Zahl 428 (genau gesagt die 2) ändert.
Gibt es irgendeine Möglichkeit dies umzusetzen?
Vielen Dank für jeden Tipp im Voraus!
Und was ist mit der 450? Oder willst du schlicht die Zahlen ausgeben, die nicht exakt 1 größer sind als ihr Vorgänger?
daran habe ich gar nicht gedacht aber genau... es geht nur im die erste Zahl bei größeren Sprüngen, also wenn die nächste Zahl nur 1 größer ist am besten nicht mit ausgeben :)
2 Antworten
Du iterierst über die Liste, speicherst dir jeweils den letzten Wert in einer Variable. Ist die Differenz zwischen dem letztem Wert und dem aktuellem Wert größer als ein von dir festgelegter Vergleichswert, dann gibst du die Zahl aus.
Ja. Du musst allerdings den range anpassen, sodass der von 0 bis zur Länge der Liste -1 geht (-1 da du ja "i+1" rechnest und du sonst beim letztem Element versuchen würdest außerhalb der Grenzen der Liste zuzugreifen).
habe eine Lösung gefunden, danke für den Denkansatz!
Das Kernproblem ist hier, daß Du die 425 übernehmen möchtest, denn hier nimmst Du einen Initialwert an, der nicht Teil der Liste ist.
>>> [ y for x,y in itertools.pairwise([0]+l) if x%100//10 != y%100//10]
[425, 441, 450]
Wobei l hier Deine Liste ist.
etwa so? das mit der als Varible speichern verstehe ich nicht so ganz... und hier kommt ein "TypeError: 'list' object cannot be interpreted as an integer" heraus