Verwendung von any()
in Kombination mit isinstance()
In diesem Schritt lernen Sie, wie Sie die Funktion any()
in Kombination mit der Funktion isinstance()
verwenden, um zu prüfen, ob eine Liste mindestens ein Element eines bestimmten Typs enthält. Dies ist besonders nützlich, wenn Sie mit Listen mit gemischten Datentypen arbeiten.
Die Funktion any()
gibt True
zurück, wenn irgendein Element in einem iterierbaren Objekt (wie einer Liste) wahr ist. Andernfalls gibt sie False
zurück. Die Funktion isinstance()
prüft, ob ein Objekt eine Instanz einer angegebenen Klasse oder eines angegebenen Typs ist.
Erstellen wir ein Python-Skript, um dies zu demonstrieren. Im VS Code-Editor erstellen Sie eine neue Datei namens any_isinstance.py
im Verzeichnis ~/project
.
## Create a mixed-type list
my_list = [1, "hello", 3.14, True]
## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)
## Print the result
print("List contains an integer:", has_integer)
## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)
## Print the result
print("List contains a string:", has_string)
## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)
## Print the result
print("List contains a float:", has_float)
## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)
## Print the result
print("List contains a boolean:", has_bool)
Speichern Sie die Datei. Führen Sie nun das Skript mit dem Befehl python
im Terminal aus:
python ~/project/any_isinstance.py
Sie sollten die folgende Ausgabe sehen:
List contains an integer: True
List contains a string: True
List contains a float: True
List contains a boolean: True
In diesem Beispiel haben wir einen Generatorausdruck (isinstance(x, int) for x in my_list)
innerhalb der Funktion any()
verwendet. Dieser Generatorausdruck gibt True
zurück, wenn ein Element x
eine Instanz von int
ist, und False
sonst. Die Funktion any()
prüft dann, ob irgendeiner dieser Werte True
ist.
Ändern wir die Liste, um zu sehen, wie sich die Ausgabe ändert. Ändern Sie das erste Element von my_list
in eine Fließkommazahl:
## Create a mixed-type list
my_list = [1.0, "hello", 3.14, True]
## Check if the list contains any integers
has_integer = any(isinstance(x, int) for x in my_list)
## Print the result
print("List contains an integer:", has_integer)
## Check if the list contains any strings
has_string = any(isinstance(x, str) for x in my_list)
## Print the result
print("List contains a string:", has_string)
## Check if the list contains any floats
has_float = any(isinstance(x, float) for x in my_list)
## Print the result
print("List contains a float:", has_float)
## Check if the list contains any booleans
has_bool = any(isinstance(x, bool) for x in my_list)
## Print the result
print("List contains a boolean:", has_bool)
Speichern Sie die Datei und führen Sie sie erneut aus:
python ~/project/any_isinstance.py
Die Ausgabe sollte nun wie folgt lauten:
List contains an integer: False
List contains a string: True
List contains a float: True
List contains a boolean: True
Jetzt enthält die Liste keine Ganzzahlen mehr, daher ist has_integer
False
.
Diese Technik ist nützlich, um den Inhalt einer Liste zu validieren oder um verschiedene Aktionen basierend auf den Typen der in der Liste enthaltenen Elemente auszuführen.