Python: Innerhalb einer Liste nur bestimmte Elemente ausgeben (siehe Beschreibung)?

Destranix  13.11.2022, 13:28

Und was ist mit der 450? Oder willst du schlicht die Zahlen ausgeben, die nicht exakt 1 größer sind als ihr Vorgänger?

Edwardo23 
Fragesteller
 13.11.2022, 13:35

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

Vom Fragesteller als hilfreich ausgezeichnet

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.

Edwardo23 
Fragesteller
 13.11.2022, 13:46
for i in range(liste_ausgabe):
   if liste_ausgabe[i + 1] - liste_ausgabe [i] > 10:
       print(liste_ausgabe)

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

0
Destranix  13.11.2022, 13:48
@Edwardo23

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).

0
Edwardo23 
Fragesteller
 13.11.2022, 16:02
@Destranix

habe eine Lösung gefunden, danke für den Denkansatz!

1

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.