Heim > Artikel > Backend-Entwicklung > Teilen Sie 18 Tipps zur effizienten Python-Programmierung
Dieser Artikel wurde von Python Programming Time zusammengestellt
Die effizienten Programmierfähigkeiten der Python-Sprache machen diejenigen von uns, die vier Jahre lang C oder C++ studiert haben, so begeistert, dass wir endlich erleichtert sind. Hochsprache, wenn sie das nicht kann, warum ist sie dann so fortgeschritten?
>>>a=3 >>>b=6
Wenn Sie Variablen in C++ austauschen möchten, benötigen Sie unbedingt eine leere Variable. Aber Python braucht es nicht, es braucht nur eine Zeile, jeder kann es klar sehen
>>>a,b=b,a >>>print(a) >>>6 >>>ptint(b) >>>5
Die meisten Python-Programmierer kennen und verwenden Listenverständnisse. Wenn Sie mit dem Konzept des Listenverständnisses nicht vertraut sind: Ein Listenverständnis ist eine kürzere, prägnantere Möglichkeit, eine Liste zu erstellen.
>>> some_list = [1, 2, 3, 4, 5] >>> another_list = [ x + 1 for x in some_list ] >>> another_list [2, 3, 4, 5, 6]
Seit Python 3.1 können wir dieselbe Syntax zum Erstellen von Mengen und Wörterbuchlisten verwenden:
>>> # Set Comprehensions >>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8] >>> even_set = { x for x in some_list if x % 2 == 0 } >>> even_set set([8, 2, 4]) >>> # Dict Comprehensions >>> d = { x: x % 2 == 0 for x in range(1, 11) } >>> d {1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}
Im ersten Beispiel erstellen wir eine Menge mit eindeutigen Elementen basierend auf some_list und in der Menge Enthält nur gerade Zahlen. Im Beispiel der Wörterbuchtabelle haben wir einen Schlüssel erstellt, der eine sich nicht wiederholende ganze Zahl zwischen 1 und 10 ist, und der Wert ist ein boolescher Typ, der angibt, ob der Schlüssel eine gerade Zahl ist.
Eine weitere erwähnenswerte Sache ist die wörtliche Darstellung von Mengen. Wir können einen Satz einfach auf diese Weise erstellen:
>>> my_set = {1, 2, 1, 2, 3, 4} >>> my_set set([1, 2, 3, 4])
ohne die integrierte Funktion set() zu verwenden.
Das klingt offensichtlich, wird aber oft vergessen. Etwas zu zählen ist für die meisten Programmierer eine häufige Aufgabe und in den meisten Fällen keine große Herausforderung – hier sind ein paar Möglichkeiten, es einfacher zu machen.
Pythons Sammlungsbibliothek verfügt über eine integrierte Unterklasse der dict-Klasse, die speziell für diese Art von Aufgaben entwickelt wurde:
>>> from collections import Counter >>> c = Counter('hello world') >>> c Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1}) >>> c.most_common(2) [('l', 3), ('o', 2)]
JSON ist eine sehr gute Form der Datenserialisierung und wird häufig verwendet durch verschiedene APIs und Webdienste heute. Durch die Verwendung der in Python integrierten JSON-Verarbeitung kann die JSON-Zeichenfolge bis zu einem gewissen Grad lesbar gemacht werden. Bei großen Datenmengen erscheint sie jedoch als lange, durchgehende Linie, die für das menschliche Auge schwer zu erkennen ist.
Um JSON-Daten benutzerfreundlicher zu machen, können wir den Parameter indent verwenden, um schönes JSON auszugeben. Dies ist besonders nützlich, wenn Sie interaktiv in der Konsole programmieren oder protokollieren:
>>> import json >>> print(json.dumps(data))# No indention {"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]} >>> print(json.dumps(data, indent=2))# With indention { "status": "OK", "count": 2, "results": [ { "age": 27, "name": "Oz", "lactose_intolerant": true }, { "age": 29, "name": "Joe", "lactose_intolerant": false } ] }
Ebenso kann die Verwendung des integrierten pprint-Moduls dazu führen, dass alles andere besser gedruckt wird.
Vor einiger Zeit hat Jeff Atwood eine einfache Programmierübung namens FizzBuzz vorgestellt. Das Problem wird wie folgt zitiert:
Schreiben Sie ein Programm, das die Zahlen 1 bis 100 ausgibt. Vielfache von 3 geben „Fizz“ aus, um es zu ersetzen diese Zahl, 5 Gibt „Buzz“ für Vielfache von und „FizzBuzz“ für Zahlen aus, die beide Vielfache von 3 und 5 sind.
Hier ist eine kurze, interessante Möglichkeit, dieses Problem zu lösen:
for x in range(1,101): print"fizz"[x%3*len('fizz')::]+"buzz"[x%5*len('buzz')::] or x
print "Hello" if True else "World" >>> Hello
Der letzte Weg unten ist sehr cool, wenn man zwei Objekte unterschiedlichen Typs bindet.
nfc = ["Packers", "49ers"] afc = ["Ravens", "Patriots"] print nfc + afc >>> ['Packers', '49ers', 'Ravens', 'Patriots'] print str(1) + " world" >>> 1 world print `1` + " world" >>> 1 world print 1, "world" >>> 1 world print nfc, 1 >>> ['Packers', '49ers'] 1
Das ist eine so tolle Kurzschriftmethode, die ich in vielen Sprachen gesehen habe
x = 2 if 3 > x > 1: print x >>> 2 if 1 < x > 0: print x >>> 2
nfc = ["Packers", "49ers"] afc = ["Ravens", "Patriots"] for teama, teamb in zip(nfc, afc): print teama + " vs. " + teamb >>> Packers vs. Ravens >>> 49ers vs. Patriots
teams = ["Packers", "49ers", "Ravens", "Patriots"] for index, team in enumerate(teams): print index, team >>> 0 Packers >>> 1 49ers >>> 2 Ravens >>> 3 Patriots
Bei einer gegebenen Liste können wir die gerade Listenmethode ausmerzen:
numbers = [1,2,3,4,5,6] even = [] for number in numbers: if number%2 == 0: even.append(number)
verwandelt sich in Folgendes:
numbers = [1,2,3,4,5,6] even = [number for number in numbers if number%2 == 0]
ähnelt der Listenableitung, das Wörterbuch kann die gleiche Aufgabe erfüllen:
teams = ["Packers", "49ers", "Ravens", "Patriots"] print {key: value for value, key in enumerate(teams)} >>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}
items = [0]*3 print items >>> [0,0,0]
teams = ["Packers", "49ers", "Ravens", "Patriots"] print ", ".join(teams) >>> 'Packers, 49ers, Ravens, Patriots'
Ich gebe zu, dass der Try/Except-Code nicht elegant ist, aber hier ist eine einfache Methode: Versuchen Sie, den Schlüssel im Wörterbuch zu finden, falls der entsprechende vorhanden ist Einer wird nicht gefunden. Der Wert wird mithilfe des zweiten Arguments auf seinen Variablenwert gesetzt.
data = {'user': 1, 'name': 'Max', 'three': 4} try: is_admin = data['admin'] except KeyError: is_admin = False
Ersetzen Sie dies durch:
data = {'user': 1, 'name': 'Max', 'three': 4} is_admin = data.get('admin', False)
Manchmal benötigen Sie nur einige Elemente in einer Liste. Hier sind einige Möglichkeiten, eine Teilmenge einer Liste zu erhalten.
x = [1,2,3,4,5,6] #前3个 print x[:3] >>> [1,2,3] #中间4个 print x[1:5] >>> [2,3,4,5] #最后3个 print x[3:] >>> [4,5,6] #奇数项 print x[::2] >>> [1,3,5] #偶数项 print x[1::2] >>> [2,4,6]
Zusätzlich zu den in Python integrierten Datentypen enthält das Erfassungsmodul auch einige spezielle Anwendungsfälle. Counter ist in manchen Situationen sehr praktisch. Wenn Sie am diesjährigen Facebook HackerCup teilgenommen haben, können Sie sogar feststellen, dass es praktisch ist.
from collections import Counter print Counter("hello") >>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
Wie die Sammlungsbibliothek gibt es auch eine Bibliothek namens itertools, mit der bestimmte Probleme effizient gelöst werden können. Einer der Anwendungsfälle besteht darin, alle Kombinationen zu finden, die Ihnen alle unmöglichen Kombinationen von Elementen in einer Gruppe anzeigen können False sind globale Variablen, daher:
from itertools import combinations teams = ["Packers", "49ers", "Ravens", "Patriots"] for game in combinations(teams, 2): print game >>> ('Packers', '49ers') >>> ('Packers', 'Ravens') >>> ('Packers', 'Patriots') >>> ('49ers', 'Ravens') >>> ('49ers', 'Patriots') >>> ('Ravens', 'Patriots')
Das obige ist der detaillierte Inhalt vonTeilen Sie 18 Tipps zur effizienten Python-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!