Ich habe zwar alle Bedingungen negiert, aber `and` habe ich nicht durch `or` ersetzt. Das war dann wohl das Problem.__blackjack__ hat geschrieben: ↑Samstag 9. November 2019, 21:39 @Atalanttore: Es ist eigentlich egal wie lang eine Bedingung ist: Klammern drum und ein ``not`` davor funktioniert *immer* für eine Negation. Also Ausgangeslage:Zum negieren einfach ein ``not`` davor:Code: Alles auswählen
if ( exclude is not None and exclude.get(vehicle_type) and model in exclude.get(vehicle_type) ): ...
Wenn man das ``not`` da jetzt rein ziehen will, geht das nach einem festen und eigentlich relativ einfachen Schema: Alle Teilbedingungen negieren und ``and``/``or`` austauschen:Code: Alles auswählen
if not ( exclude is not None and exclude.get(vehicle_type) and model in exclude.get(vehicle_type) ): ...
Code: Alles auswählen
if ( exclude is None or not exclude.get(vehicle_type) or model not in exclude.get(vehicle_type) ): ...
Hängt bei einer Liste die Bedeutung der Elemente nicht auch von ihrer Position ab?__blackjack__ hat geschrieben: ↑Samstag 9. November 2019, 21:39 Ich habe da eine Liste gewählt weil es im Argument wenn es vorhanden ist eine Liste sein sollte. Oder ein `set`. Aber kein Tupel. Funktionieren tun alle drei. Tupel halt nicht weil man als Leser bei Tupeln erwartet, dass die Bedeutung der Elemente von der Position abhängt.
Bisher habe ich die Eigenschaften der verschiedenen Datenstrukturen so verstanden:
Liste: Änderbar, Elemente geordnet in Position, Elemente können mehrfach vorkommen
Tupel: Nicht änderbar, Elemente geordnet in Position, Elemente können mehrfach vorkommen
Set: Änderbar, Elemente an beliebiger Position, Elemente können nicht mehrfach vorkommen
Gruß
Atalanttore