Defintion von Zyklen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
MRO5494
User
Beiträge: 22
Registriert: Dienstag 26. November 2019, 16:20

Dienstag 24. Dezember 2019, 12:01

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
Benutzeravatar
pillmuncher
User
Beiträge: 1164
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Dienstag 24. Dezember 2019, 13:14

Ich weiß nicht recht, was du mit "Definition von Zyklen" meinst, aber so kannst du die Maximalwerte jedes "Zyklus" ausgeben lassen:

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()
Ergebnis:

Code: Alles auswählen

$ python3 cycle.py
9
7
9
In specifications, Murphy's Law supersedes Ohm's.
MRO5494
User
Beiträge: 22
Registriert: Dienstag 26. November 2019, 16:20

Donnerstag 26. Dezember 2019, 15:15

Dankeschön. Das hat mir sehr geholfen
MRO5494
User
Beiträge: 22
Registriert: Dienstag 26. November 2019, 16:20

Donnerstag 23. Januar 2020, 16:36

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?
Sirius3
User
Beiträge: 11317
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 23. Januar 2020, 17:56

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?
Antworten