Seite 1 von 1

for loop /if Problem

Verfasst: Donnerstag 6. Mai 2021, 08:49
von Rosa
Hallo an alle,

ich habe eine Liste von Tupeln (also x und y Koordinaten) und möchte wissen ob diese Tupel in einem bestimmten Intervall liegen (z. B. 2 > x > 1). Wenn der erste Tupel/Eintrage/Koordinate in diesen Intervall liegt, dann kommt die entsprechende Zeile der Liste mit den Tupeln in eine seperate Liste. Dann wird der durch iteriert und jede Zeile sollte in andere Listen reingeschrieben werden. Ich hoffe ich konnte es irgendwie erklären. :?

Vereinfacht zum Verständnis:

Code: Alles auswählen

Alte_Liste = [(1,1), (2,1),....], [..], [..],..
Neue_Liste = []

for i in range(len(Alte_Liste)):
      for j in range(len(Alte_Liste[i])):
           if (2 > x[i][j] > 1) and (2 > y[i][j] > 1):           
                Neue_Liste.append(Alte_Liste)
                if Alte_Liste in Neue_Liste:
                    continue
                 
Mein Problem ist es, dass in jeder Überprüfung des Eintrages die gleiche Zeile in die Neue_Liste eingetragen wird. Die Einträge der Zeile sollen alle überprüft werden, aber die Zeile soll nur einmal hinzugefügt werden in Neue_Liste. Aktuell wird je Eintrag die gleiche Zeile jedes mal in die neue Liste hinzugefügt. Wenn also die Zeile 10 Einträge hat, hat die neue Liste 10 gleiche Zeilen, dessen Einträge überprüft wurden sind. Habt ihr eine Idee wie man das beschränken könnte? Ich habe es mit der zweiten if-Bedingung probiert, erfolglos.

Vielen Dank schonmal für die Unterstützung. :roll:

Re: for loop /if Problem

Verfasst: Donnerstag 6. Mai 2021, 10:48
von Sirius3
Eine vereinfachter Code hilft nicht beim Verstehen Deines Problems.
Über Indizes iteriert man nicht, ich versteh nicht, was i und j von Alte_Liste mit einem x und y zu tun hat? Woher kommen diese x und y?
Wenn Du Alte_Liste komplett in Neue_Liste schreibt dann ist natürlich das if danach immer wahr. Das ist eh unsinnig, da egal ob Du continue ausführst oder nicht, Du mit dem nächsten Schleifendurchgang weiter machst.

Das was Du Alte_Liste nennst, ist laut Code ein Tuple. Wie sehen die Daten also tatsächlich aus?

Re: for loop /if Problem

Verfasst: Donnerstag 6. Mai 2021, 11:43
von Zizibee
Willst du so etwas in der Art?

Code: Alles auswählen

alte_liste = [[(1.1, 1.8), ("kommt rein"), ("kommt auch rein")],
              [(1.1, 2.1), ("kommt nicht rein")],
              [(1.8, 1.1), ("kommt rein")]]
neue_liste =  []

for element in alte_liste:
    if 2 > element[0][0] > 1  and 2 > element[0][1] > 1:
        neue_liste.append(element)

print(neue_liste)
Ausgabe:
[[(1.1, 1.8), 'kommt rein', 'kommt auch rein'], [(1.8, 1.1), 'kommt rein']]