Heim  >  Artikel  >  Backend-Entwicklung  >  Vier deduktive Python-Entwicklungstechniken, um Ihren Code effizienter zu machen

Vier deduktive Python-Entwicklungstechniken, um Ihren Code effizienter zu machen

WBOY
WBOYnach vorne
2023-04-22 09:40:081276Durchsuche

In der Datenwissenschaft wird Python normalerweise häufig für die Datenverarbeitung und -transformation verwendet. Es bietet leistungsstarke Datenstrukturverarbeitungsfunktionen, um die Datenverarbeitung flexibler zu gestalten.

Das bedeutet, dass es immer mehrere Möglichkeiten gibt Um in Python das gleiche Ergebnis zu erzielen, haben wir immer unterschiedliche Methoden und müssen diejenige auswählen, die einfach zu verwenden ist, Zeit spart und eine bessere Kontrolle bietet.

Es ist unmöglich, alle diese Methoden zu beherrschen. Hier ist eine Liste mit 4 Python-Tipps, die Sie kennen sollten, wenn Sie mit Daten jeglicher Art arbeiten.

Vier deduktive Python-Entwicklungstechniken, um Ihren Code effizienter zu machen

Listenverständnis ist eine elegante und äußerst Python-freundliche Möglichkeit, Listen zu erstellen. Im Vergleich zu for-Schleifen und if-Anweisungen haben Listenverständnisse eine viel kürzere Syntax zum Erstellen einer neuen Liste basierend auf den Werten einer vorhandenen Liste. Sehen wir uns also an, wie diese Funktion eine Kopie der Liste erhält.

Kopieren einer Liste mithilfe von Listenverständnissen

Manchmal ist es notwendig, eine Kopie einer vorhandenen Liste zu erstellen. Die einfachste Antwort ist .copy(), mit der Sie den Inhalt einer Liste in eine andere (neue) Liste kopieren können.

Zum Beispiel eine Liste mit Ganzzahlen original_list.

original_list = [10,11,20,22,30,34]

Diese Liste kann einfach mit der Methode .copy() kopiert werden.

duplicated_list = original_list.copy()

Die exakt gleiche Ausgabe kann mit einem Listenverständnis erzielt werden. Das Kopieren einer Liste ist ein gutes Beispiel für das Verständnis von Listenverständnis.

Schauen Sie sich den Code unten an.

duplicated_list = [item for item in original_list]

Das soll nicht heißen, dass es besser ist, beim Kopieren einer Liste das Listenverständnis zu verwenden, aber es bedeutet, dass dieser Fall am besten für die Einführung der Arbeitsmethode des Listenverständnisses geeignet ist.

Als nächstes sehen wir uns an, wie das Listenverständnis das Durchführen mathematischer Operationen für jedes Element einer Liste erleichtert.

Multiplizieren Sie die Elemente in einer Liste

Die einfachste oder unkomplizierteste Möglichkeit zum Multiplizieren ist die Verwendung des Multiplikationsoperators *

Sie möchten beispielsweise jedes Element in der Liste mit einem Skalar (d. h. der Zahl 5) multiplizieren. . Sie können hier definitiv nicht original_list*5 verwenden, da dadurch 5 Kopien der Liste erstellt werden.

In diesem Szenario ist die beste Antwort ein Listenverständnis, wie unten gezeigt.

original_list = [10,11,20,22,30,34]
 multiplied_list = [item*5 for item in original_list]
 
 # Output
 [50, 55, 100, 110, 150, 170]

Die Operation hier ist nicht auf die Multiplikation einer Zahl beschränkt. Für jedes Element der Originalliste können komplexe Operationen ausgeführt werden.

Angenommen, Sie möchten die Kubikzahl der Quadratwurzel jedes Termes berechnen. Sie können es in einer Zeile lösen.

multiplied_list = [math.sqrt(item)**3 for item in original_list]
 
 # Output
 [31.6227766016838,
36.4828726939094,
89.4427190999916,
103.18914671611546,
164.31676725154983,
198.25236442474025]

Die Funktion sqrt, die zum Berechnen der Quadratwurzel einer Zahl verwendet wird, gehört zur Bibliotheksmathematik, daher muss sie in diesem Fall vor der Verwendung importiert werden.

Ähnlich den oben gezeigten integrierten Funktionen ist es auch möglich, benutzerdefinierte Funktionen für jedes Element der Liste zu verwenden.

Zum Beispiel eine einfache Funktion wie unten gezeigt.

def simple_function(item):
item1 = item*10
item2 = item*11
return math.sqrt(item1**2 + item2**2)

kann diese benutzerdefinierte Funktion auf jedes Element in der Liste anwenden.

multiplied_list = [simple_function(item) for item in original_list]
 
 # Output
 [148.66068747318505,
163.52675622050356,
297.3213749463701,
327.0535124410071,
445.9820624195552,
505.4463374088292]

Listenverständnisse sind in realen Szenarien noch nützlicher. Normalerweise müssen Sie bei Analyseaufgaben bestimmte Arten von Elementen aus einer Liste löschen, z. B. das Entfernen von Nano-Elementen. Listenverständnisse sind das perfekte Werkzeug für diese Aufgaben.

Elemente aus einer Liste entfernen

Das Filtern von Daten anhand bestimmter Kriterien ist eine der häufigsten Aufgaben zur Auswahl des erforderlichen Datensatzes. Dieselbe Logik wird auch beim Listenverständnis verwendet.

Angenommen, Sie haben die unten genannte Liste der Nummern.

original_list = [10, 22, -43, 0, 34, -11, -12, -0.1, 1]

Sie möchten nur positive Werte aus dieser Liste behalten. Logischerweise möchten Sie also nur die Elemente behalten, die für bedingte Elemente > 0 als WAHR ausgewertet werden. Die

new_list = [item for item in original_list if item > 0]
 
 # Output
 [10, 22, 34, 1]

if-Klausel wird zum Löschen negativer Werte verwendet. Sie können jede beliebige Bedingung anwenden, indem Sie die if-Klausel verwenden, um ein beliebiges Element aus der Liste zu entfernen.

Wenn Sie beispielsweise alle Begriffe löschen möchten, deren Quadrat kleiner als 200 ist, müssen Sie lediglich den bedingten Begriff **2 > 200 in der Listensynthese erwähnen, wie unten gezeigt.

new_list = [item for item in original_list if item**2 > 200]
 
 # Output
 [22, -43, 34]

Beim Umgang mit realen Datensätzen können die Bedingungen zum Filtern von Listenelementen viel komplexer sein, diese Methode ist schnell und einfach zu verstehen.

Konvertieren Sie zwei Listen mit dict() in Wörterbuch-Schlüssel-Wert-Paare.

Manchmal ist es notwendig, ein Wörterbuch aus den Werten in zwei Listen zu erstellen. Anstatt sie einzeln einzugeben, können Sie Wörterbuchverständnisse (dictionary comprehension) verwenden. Dies ist eine elegante und prägnante Möglichkeit, ein Wörterbuch zu erstellen

Es funktioniert genau wie Listenverständnisse, nur der Unterschied besteht darin, wann Beim Erstellen eines Listenverständnisses schließen Sie alles in eckige Klammern ein, z. B. [], während Sie bei einem Wörterbuchverständnis alles in geschweifte Klammern einschließen, z. B. {}.

Angenommen, es gibt zwei Listen – Felder und Details – wie unten gezeigt.

fields = [‘name’, ‘country’, ‘age’, ‘gender’]
 details = [‘pablo’, ‘Mexico’, 30, ‘Male’]

Eine einfache Möglichkeit besteht darin, ein Wörterbuchverständnis wie dieses zu verwenden -

new_dict = {key: value for key, value in zip(fields, details)}
 
 # Output
 {'name': 'pablo', 'country': 'Mexico', 'age': 30, 'gender': 'Male'}

Hier ist es wichtig zu verstehen, wie die Funktion zip funktioniert.

In Python akzeptiert die Zip-Funktion iterierbare Objekte wie Zeichenfolgen, Listen oder Wörterbücher als Eingabe und gibt sie in Tupeln aggregiert zurück.

In diesem Fall hat zip also aus den Listenfeldern und Details ein Paar jedes Elements gebildet. Wenn Sie „key:value“ in einem Wörterbuchverständnis verwenden, entpacken Sie dieses Tupel einfach in einzelne Schlüssel-Wert-Paare.

Bei Verwendung des integrierten dict()-Konstruktors in Python (zum Erstellen von Wörterbüchern) wird der Prozess sogar noch schneller, da dict() mindestens 1,3-mal schneller ist als Wörterbuchverständnisse

Also müssen wir diesen Konstruktor mit der Funktion zip() verwenden, seine Syntax ist viel einfacher – dict(zip(fields, details))

Zusammenfassung

Wie ich eingangs erwähnt habe, ist Python sehr flexibel, da es mehrere Möglichkeiten gibt, das gleiche Ergebnis zu erzielen. Abhängig von der Komplexität der Aufgabe müssen Sie den besten Weg zur Lösung wählen.

Ich hoffe, dieser Artikel kann für Sie nützlich sein. Wenn es eine andere Möglichkeit gibt, das Gleiche zu tun, was ich in diesem Artikel erwähnt habe, lassen Sie es mich bitte wissen.

Das obige ist der detaillierte Inhalt vonVier deduktive Python-Entwicklungstechniken, um Ihren Code effizienter zu machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen