Hallo Leute,
Ich habe folgende Beispiel-Tabelle.
x y
1 2
2 4
3 8
4 9
1 2
2 6
3 7
4 1
1 8
2 8
3 9
4 4
Nun möchte ich definieren, das x= 1-4 immer ein zyklus ist und mir das maximum ausgeben lassen. Es gibt also im Beispiel 3 Zyklen, von denen ich jeweils den Maximalwert von y ausgelesen haben möchte.
Kann mir jemand helfen wie man diese Zyklen definiert, oder nach was ich googeln könnte. Ich bin Python-Anfänger und verliere mich sehr schnell in verschiedenen packages. Ich habe es bisher immer über die Spaltenangabe gelöst, aber ich möchte das mein Programm automatisch erkennt, das 1-4 ein Zyklus ist.
Vielen Dank im Voraus.
Mit freundlichen Grüßen
MRO
Defintion von Zyklen
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Ich weiß nicht recht, was du mit "Definition von Zyklen" meinst, aber so kannst du die Maximalwerte jedes "Zyklus" ausgeben lassen:Ergebnis:
Code: Alles auswählen
#!/usr/bin/env python3
def main():
table = [[1, 2],
[2, 4],
[3, 8],
[4, 9],
[1, 2],
[2, 6],
[3, 7],
[4, 1],
[1, 8],
[2, 8],
[3, 9],
[4, 4]]
data = iter(table)
xmax, ymax = next(data)
for x, y in data:
if xmax >= x:
print(ymax)
xmax = x
ymax = y
else:
ymax = max(y, ymax)
print(ymax)
if __name__ == '__main__':
main()
Code: Alles auswählen
$ python3 cycle.py
9
7
9
In specifications, Murphy's Law supersedes Ohm's.
Hallo,
Ich habe nochmal versucht mich intensiver mit dieser if else Anweisung auseinander zu setzen, verstehe sie aber immer noch nicht hundertprozentig.
Ich habe nun folgende Tabelle:
table = [[1, 2],
[1, 4],
[1, 8],
[1, 9],
[2, 2],
[2, 6],
[2, 7],
[2, 1],
[3, 8],
[3, 8],
[3, 9],
[3, 4]]
und deinen Code wie folgt angepasst:
data = iter(table)
xmax, ymax = next(data)
for x, y in data:
if xmax >= x:
print(ymax)
else:
xmax = x
ymax = max(y, ymax)
print(ymax)
Mein gewünschtes Ergebnis ist wieder 9, 7, 9. Es wird jedoch 2 2 2 2 2 2 8 8 8 8 ausgegeben.
Was mache ich Falsch?
Ich habe nochmal versucht mich intensiver mit dieser if else Anweisung auseinander zu setzen, verstehe sie aber immer noch nicht hundertprozentig.
Ich habe nun folgende Tabelle:
table = [[1, 2],
[1, 4],
[1, 8],
[1, 9],
[2, 2],
[2, 6],
[2, 7],
[2, 1],
[3, 8],
[3, 8],
[3, 9],
[3, 4]]
und deinen Code wie folgt angepasst:
data = iter(table)
xmax, ymax = next(data)
for x, y in data:
if xmax >= x:
print(ymax)
else:
xmax = x
ymax = max(y, ymax)
print(ymax)
Mein gewünschtes Ergebnis ist wieder 9, 7, 9. Es wird jedoch 2 2 2 2 2 2 8 8 8 8 ausgegeben.
Was mache ich Falsch?
Du hast also den Code von pillmuncher ignoriert, und irgendetwas anderes geschrieben und fragst nun, warum der Code etwas anderes als der von pillmuncher liefert?
Was hast Du Dir für Gedanken gemacht, als Du die Zeilen so geschrieben hast, wie Du sie geschrieben hast?
Was hast Du Dir für Gedanken gemacht, als Du die Zeilen so geschrieben hast, wie Du sie geschrieben hast?