2017-09-02 2 views
-2
dummy_list = ["1", "2", "3", "4"] 

if 1 in dummy_list is [0]: 
    print ("it is the first element") 
else: 
    print ("no it is not the first element") 

Ich versuche anhand einer Liste zu überprüfen, ob die Position einer Variablen in der Liste innerhalb eines angegebenen Gebietsschemas liegt. Nun, trotz der Tatsache, dass [0] IS 1 ist, (dies wurde durch folgendes verifiziert):Odd Verhalten von bedingten Anweisung?

print (dummy_list[0]) 

Welche gab 1 zurück; Ich bin dann verwirrt, warum die bedingte Aussage etwas anderes sagt.

Hallo, können die Leute aufhören anonym anonym zu gehen?

Irgendwie erschwert es den Lernenden, Bedenken zu veröffentlichen und Feedback zu erhalten, wenn sie von Feiglingen bevormundet werden.

Antwort

2

in ist ein separater Test von is; Sie chained the comparisons und Python führt den Test als:

(1 in dummy_list) and (dummy_list is [0]) 

Beide Tests fehlschlagen. Es gibt keine 1 Ganzzahl in dummy_list, nur ein "1" String-Objekt. Und dummy_list ist nicht das exakt gleiche Objekt wie die Liste, die durch den Ausdruck [0] Ausdruck erzeugt wird; Letzteres erzeugt immer ein neues Listenobjekt, so dass die is identity test immer fehlschlägt.

Sie können keine Aussage über den Test in machen; Sie können nicht testen, zu welchem ​​Index das Containment passt. Testen Sie einfach den Index explizit:

if dummy_list[0] == "1": 

oder wenn dummy_list eine leere Liste sein könnte, einen Test hinzufügen, um sicherzustellen, dass es nicht leer ist:

if dummy_list and dummy_list[0] == "1":