Arbeiten an einigen grundlegenden Programmierübungen, aber war etwas verwirrt zu finden, dass die folgenden Code-Schnipsel nicht die gleichen Werte zurückgeben. Die Listenverständnis-Syntax scheint die "Nicht-in" -Schlüsselwörter, die ich in der Liste verwendet habe, die aus dem Listenverständnis selbst erzeugt wird, fast zu ignorieren. Ist dieses Verhalten nicht erlaubt? Die Funktion findet einfach, ob eine 1, 2 und 3 irgendwo in einer Liste von Ganzzahlen existiert.List Verständnis und "nicht in" Keywords
# Working, no list-comprehension
def array123(lst):
my_lst = []
for num in lst:
if num not in my_lst and (num == 1 or num == 2 or num == 3):
my_lst.append(num)
if sorted(my_lst) == [1, 2, 3]:
return True
else:
return False
# List Comprehension
def array123(lst):
my_lst = []
my_lst = [num for num in lst if num not in my_lst and (num == 1 or num == 2 or num == 3)]
if sorted(my_lst) == [1, 2, 3]:
return True
else:
return False
Was sind deine Eingabe s und erwartete Ausgaben? – AK47
Ergebnis des Listenverständnisses wird erst zugewiesen, wenn es abgeschlossen ist. Im ersten Fall wird 'my_lst' während des Schleifens aktualisiert. Im zweiten Fall ist es nicht. –