Wie man prüft, ob eine Menge in Python nur Zahlen enthält

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in Python prüfen können, ob eine Menge (Set) nur Zahlen enthält. Das Lab konzentriert sich auf die Definition numerischer Mengen, einschließlich leerer Mengen, Mengen von Ganzzahlen, Mengen von Fließkommazahlen und gemischten Mengen, die sowohl Ganzzahlen als auch Fließkommazahlen enthalten. Sie werden auch untersuchen, wie Mengen doppelte Werte behandeln und die Eindeutigkeit gewährleisten.

Das Lab führt Sie durch den Prozess der Erstellung einer Python-Datei namens numeric_sets.py, das Hinzufügen von Code zur Definition und Ausgabe verschiedener Mengen sowie das Ausführen des Skripts, um die Ausgabe zu beobachten. Sie lernen, wie Sie den set()-Konstruktor verwenden und wie Mengen automatisch doppelte Werte entfernen, was die grundlegenden Eigenschaften von Mengen in Python zeigt.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/sets("Sets") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/numeric_types -.-> lab-559559{{"Wie man prüft, ob eine Menge in Python nur Zahlen enthält"}} python/conditional_statements -.-> lab-559559{{"Wie man prüft, ob eine Menge in Python nur Zahlen enthält"}} python/sets -.-> lab-559559{{"Wie man prüft, ob eine Menge in Python nur Zahlen enthält"}} python/build_in_functions -.-> lab-559559{{"Wie man prüft, ob eine Menge in Python nur Zahlen enthält"}} python/data_collections -.-> lab-559559{{"Wie man prüft, ob eine Menge in Python nur Zahlen enthält"}} end

Definition numerischer Mengen

In diesem Schritt lernen Sie, wie Sie in Python Mengen (Sets) definieren, die Zahlen enthalten. Mengen sind ungeordnete Sammlungen eindeutiger Elemente. Das bedeutet, dass eine Menge keine doppelten Werte enthalten kann. Wir werden uns auf die Erstellung von Mengen aus Ganzzahlen und Fließkommazahlen konzentrieren.

Zunächst erstellen wir eine Python-Datei namens numeric_sets.py in Ihrem ~/project-Verzeichnis mit dem VS Code-Editor.

## Create an empty set
empty_set = set()
print("Empty Set:", empty_set)

## Create a set of integers
integer_set = {1, 2, 3, 4, 5}
print("Integer Set:", integer_set)

## Create a set of floats
float_set = {1.0, 2.5, 3.7, 4.2, 5.9}
print("Float Set:", float_set)

## Create a mixed set (integers and floats)
mixed_set = {1, 2.0, 3, 4.5, 5}
print("Mixed Set:", mixed_set)

Speichern Sie die Datei als numeric_sets.py in Ihrem ~/project-Verzeichnis. Führen Sie nun das Skript mit dem folgenden Befehl im Terminal aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Empty Set: set()
Integer Set: {1, 2, 3, 4, 5}
Float Set: {1.0, 2.5, 3.7, 4.2, 5.9}
Mixed Set: {1, 2.0, 3, 4.5, 5}

Beachten Sie, dass die Reihenfolge der Elemente in der Menge möglicherweise nicht mit der Reihenfolge übereinstimmt, in der sie definiert wurden. Dies liegt daran, dass Mengen ungeordnete Sammlungen sind. Außerdem entfernen Mengen automatisch doppelte Werte.

Fügen wir nun einige weitere Beispiele zu Ihrer numeric_sets.py-Datei hinzu, um die Eindeutigkeit von Mengen zu demonstrieren:

## Create a set with duplicate values
duplicate_set = {1, 2, 2, 3, 4, 4, 5}
print("Duplicate Set:", duplicate_set)

## Create a set from a list with duplicate values
duplicate_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(duplicate_list)
print("Unique Set from List:", unique_set)

Speichern Sie die Änderungen und führen Sie das Skript erneut aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Empty Set: set()
Integer Set: {1, 2, 3, 4, 5}
Float Set: {1.0, 2.5, 3.7, 4.2, 5.9}
Mixed Set: {1, 2.0, 3, 4.5, 5}
Duplicate Set: {1, 2, 3, 4, 5}
Unique Set from List: {1, 2, 3, 4, 5}

Wie Sie sehen können, enthalten sowohl die duplicate_set als auch die unique_set nur eindeutige Werte, obwohl wir versucht haben, sie mit doppelten Werten zu erstellen.

Verwendung von all() mit isinstance()

In diesem Schritt lernen Sie, wie Sie die all()-Funktion in Kombination mit der isinstance()-Funktion verwenden, um zu prüfen, ob alle Elemente in einer Menge (Set) von einem bestimmten numerischen Typ sind. Dies ist nützlich, um den Inhalt einer Menge zu validieren, bevor Sie Operationen darauf ausführen.

Die all()-Funktion gibt True zurück, wenn alle Elemente in einem iterierbaren Objekt (wie einer Menge) wahr sind. Die isinstance()-Funktion prüft, ob ein Objekt eine Instanz einer angegebenen Klasse oder eines angegebenen Typs ist.

Ändern wir die numeric_sets.py-Datei, die Sie im vorherigen Schritt erstellt haben, um diese Prüfungen hinzuzufügen. Öffnen Sie numeric_sets.py im VS Code-Editor und fügen Sie den folgenden Code hinzu:

def check_if_all_are_integers(input_set):
  """Checks if all elements in the set are integers."""
  return all(isinstance(x, int) for x in input_set)

def check_if_all_are_floats(input_set):
  """Checks if all elements in the set are floats."""
  return all(isinstance(x, float) for x in input_set)

## Example usage:
integer_set = {1, 2, 3, 4, 5}
float_set = {1.0, 2.5, 3.7, 4.2, 5.9}
mixed_set = {1, 2.0, 3, 4.5, 5}

print("Are all elements in integer_set integers?", check_if_all_are_integers(integer_set))
print("Are all elements in float_set floats?", check_if_all_are_floats(float_set))
print("Are all elements in mixed_set integers?", check_if_all_are_integers(mixed_set))
print("Are all elements in mixed_set floats?", check_if_all_are_floats(mixed_set))

Speichern Sie die Datei und führen Sie sie mit dem folgenden Befehl aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Are all elements in integer_set integers? True
Are all elements in float_set floats? True
Are all elements in mixed_set integers? False
Are all elements in mixed_set floats? False

Die Ausgabe zeigt, dass integer_set nur Ganzzahlen enthält, float_set nur Fließkommazahlen enthält und mixed_set eine Mischung aus Ganzzahlen und Fließkommazahlen enthält. Daher geben die Prüfungen für Ganzzahlen und Fließkommazahlen False zurück.

Fügen wir nun eine Funktion hinzu, um zu prüfen, ob alle Elemente entweder Ganzzahlen oder Fließkommazahlen (d.h. numerisch) sind:

def check_if_all_are_numeric(input_set):
  """Checks if all elements in the set are either integers or floats."""
  return all(isinstance(x, (int, float)) for x in input_set)

print("Are all elements in mixed_set numeric?", check_if_all_are_numeric(mixed_set))

string_set = {"a", "b", "c"}
print("Are all elements in string_set numeric?", check_if_all_are_numeric(string_set))

Speichern Sie die Datei und führen Sie sie erneut aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Are all elements in integer_set integers? True
Are all elements in float_set floats? True
Are all elements in mixed_set integers? False
Are all elements in mixed_set floats? False
Are all elements in mixed_set numeric? True
Are all elements in string_set numeric? False

Dies zeigt, wie man all() und isinstance() verwendet, um die Typen der Elemente in einer Menge zu validieren.

Umgang mit leeren Mengen

In diesem Schritt lernen Sie, wie Sie leere Mengen (Sets) behandeln, wenn Sie die Funktionen all() und isinstance() verwenden. Leere Mengen sind ein Sonderfall, da sie keine Elemente enthalten. Das Verständnis, wie diese Funktionen mit leeren Mengen umgehen, ist entscheidend für die Entwicklung robuster Code.

Betrachten wir, was passiert, wenn Sie all() mit einer leeren Menge verwenden. Die all()-Funktion gibt True zurück, wenn alle Elemente in einem iterierbaren Objekt wahr sind. Da eine leere Menge keine Elemente hat, kann man argumentieren, dass "alle" ihre Elemente wahr sind, einfach weil es keine Elemente gibt, die falsch sein könnten.

Ändern wir die numeric_sets.py-Datei, um dies zu demonstrieren. Öffnen Sie numeric_sets.py im VS Code-Editor und fügen Sie den folgenden Code hinzu:

def check_if_all_are_integers(input_set):
  """Checks if all elements in the set are integers."""
  return all(isinstance(x, int) for x in input_set)

## Example with an empty set:
empty_set = set()
print("Is empty_set all integers?", check_if_all_are_integers(empty_set))

Speichern Sie die Datei und führen Sie sie mit dem folgenden Befehl aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Is empty_set all integers? True

Dieses Ergebnis mag zunächst unintuitiv erscheinen. Es stimmt jedoch mit der Definition von all() überein.

Betrachten wir nun ein Szenario, in dem Sie leere Mengen explizit anders behandeln möchten. Sie können eine Prüfung auf eine leere Menge hinzufügen, bevor Sie all() verwenden:

def check_if_all_are_integers_safe(input_set):
  """Checks if all elements in the set are integers, handling empty sets explicitly."""
  if not input_set:
    return False  ## Or True, depending on your desired behavior for empty sets
  return all(isinstance(x, int) for x in input_set)

empty_set = set()
print("Is empty_set all integers (safe)?", check_if_all_are_integers_safe(empty_set))

integer_set = {1, 2, 3}
print("Is integer_set all integers (safe)?", check_if_all_are_integers_safe(integer_set))

Speichern Sie die Datei und führen Sie sie erneut aus:

python numeric_sets.py

Sie sollten die folgende Ausgabe sehen:

Is empty_set all integers (safe)? False
Is integer_set all integers (safe)? True

In diesem Beispiel gibt die Funktion check_if_all_are_integers_safe für eine leere Menge False zurück. Sie können den Rückgabewert im if not input_set:-Block an Ihre spezifischen Anforderungen anpassen. Das explizite Behandeln von leeren Mengen kann unerwartetes Verhalten in Ihrem Code verhindern.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man in Python Mengen (Sets) mit Zahlen definiert, einschließlich leerer Mengen, Mengen von Ganzzahlen, Mengen von Fließkommazahlen und gemischten Mengen, die sowohl Ganzzahlen als auch Fließkommazahlen enthalten. Sie haben auch beobachtet, dass Mengen ungeordnete Sammlungen sind und automatisch doppelte Werte entfernen.

Das Lab hat gezeigt, wie man Mengen direkt und aus Listen mit doppelten Werten erstellt, wobei die Eigenschaft der Menge hervorgehoben wurde, nur eindeutige Elemente zu behalten. Die Beispiele haben ein praktisches Verständnis dafür vermittelt, wie Mengen verschiedene numerische Typen verarbeiten und Redundanzen beseitigen.