Wie können Sie Ihren Python-Code pythonischer gestalten?
Pythonic ist sehr pythonisch, wenn man es ins Chinesische übersetzt. In China gibt es viele Verwendungen der Substantivstruktur „sehr“, wie zum Beispiel: „sehr mädchenhaft“, „sehr Fußballnationalmannschaft“, „sehr CCTV“ usw. ·
Der Einfachheit halber verwenden wir im Folgenden P, um die pythonische Schreibmethode darzustellen, und NP, um die nicht-pythonische Schreibmethode darzustellen. Natürlich ist dieses P-NP nicht das P-. NP.
Warum Python verfolgen?
Im Vergleich zu NP ist die Schreibmethode von P prägnant, klar und elegant. Meistens ist die Ausführungseffizienz hoch und je weniger Code, desto weniger Fehler -anfällig ist es. Ich denke, dass gute Programmierer beim Schreiben von Code auf Korrektheit, Einfachheit und Lesbarkeit achten sollten. Dies ist genau der Geist von Python.
Für Programmierer (wie mich), die Erfahrung in anderen Programmiersprachen haben und mit Python noch nicht vertraut sind, wird das Erkennen der Python-Schreibmethode mehr Komfort und Effizienz beim Schreiben von Python-Code bringen. Die Hauptleser dieses Artikels wird auch diese Gruppe von Programmierern sein.
N Beispiele für P und NP werden unten als Referenz für die Leser aufgeführt.
Beispiel für P vs. NP
Kettenvergleich
P:
a = 3 b = 1 1 <= b <= a < 10 #True
NP:
a = 3 b = 1 b >= 1 and b <= a and a < 10 #True
P ist eine Syntax, die Grundschüler verstehen können, sie ist einfach und direkt und spart Code ~
Wahrheitstest
P:
name = 'Tim' langs = ['AS3', 'Lua', 'C'] info = {'name': 'Tim', 'sex': 'Male', 'age':23 } if name and langs and info: print('All True!') #All True!
NP:
if name != '' and len(langs) > 0 and info != {}: print('All True!') #All True!
Kurz gesagt, die Art und Weise, wie P geschrieben wird, besteht darin, die Authentizität eines Objekts direkt zu beurteilen, ohne die Beurteilungsbedingungen zu schreiben. Dies kann nicht nur die Richtigkeit sicherstellen, sondern auch die Menge reduzieren Code.
Wahr- und Falsch-Wertetabelle (Sie können viel Code sparen, wenn Sie sich an Falsch erinnern!)
Wahr Falsch
Wahr Falsch
Jede nicht leere Zeichenfolge, leere Zeichenfolge''
Jede Zahl ungleich 0, Zahl 0
Jeder nicht leere Container, leerer Container[] () {} set()
Alle anderen Nicht-Falsch-Keine
String Reverse
P:
def reverse_str( s ): return s[::-1]
NP:
def reverse_str( s ): t = '' for x in xrange(len(s)-1,-1,-1): t += s[x] return t
P ist einfach zu schreiben und nach dem Testen effizienter.
Wenn es zur Erkennung von Palindromen verwendet wird, ist es ein Satz von input == input[::-1], wie elegant!
Verkettung von Stringlisten
P:
strList = ["Python", "is", "good"] res = ' '.join(strList) #Python is good
NP :
res = '' for s in strList: res += s + ' ' #Python is good #最后还有个多余空格
string.join() wird häufig zum Verbinden von Zeichenfolgen in einer Liste verwendet. Im Vergleich zu NP ist die P-Methode sehr effizient und fehlerfrei . .
Listensumme, Maximum, Minimum, Produkt
P:
numList = [1,2,3,4,5] sum = sum(numList) #sum = 15 maxNum = max(numList) #maxNum = 5 minNum = min(numList) #minNum = 1 from operator import mul prod = reduce(mul, numList, 1) #prod = 120 默认值传1以防空列表报错
NP:
sum = 0 maxNum = -float('inf') minNum = float('inf') prod = 1 for num in numList: if num > maxNum: maxNum = num if num < minNum: minNum = num sum += num prod *= num # sum = 15 maxNum = 5 minNum = 1 prod = 120
Nach einem einfachen Test wird die Liste summiert, wenn die Länge von numList 10000000 beträgt Auf meiner Maschine benötigt P 0,6 Sekunden und NP 1,3 Sekunden, was fast dem Doppelten des Unterschieds entspricht. Erfinden Sie also nicht Ihr eigenes Rad neu.
Listenverständnis
P:
l = [x*x for x in range(10) if x % 3 == 0] #l = [0, 9, 36, 81]
NP:
l = [] for x in range(10): if x % 3 == 0: l.append(x*x) #l = [0, 9, 36, 81]
Sehen Sie, wie einfach und intuitiv es wird, mit Ps Listenverständnis eine neue Liste zu erstellen!
Wörterbuch-Standardwert
P:
dic = {'name':'Tim', 'age':23} dic['workage'] = dic.get('workage',0) + 1 #dic = {'age': 23, 'workage': 1, 'name': 'Tim'}
NP:
if 'workage' in dic: dic['workage'] += 1 else: dic['workage'] = 1 #dic = {'age': 23, 'workage': 1, 'name': 'Tim'}
Die Methode get(key,default) von dict wird verwendet, um den Wert des Schlüssels im Wörterbuch abzurufen. Dem Schlüssel wird der Standardwert zugewiesen. Der Wert ist Standard.
Im Vergleich zu NP wird P weniger als if...else... geschrieben, was wirklich die erste Wahl für Leute ist, die if...else... hassen!
für…sonst… Aussage
P:
for x in xrange(1,5): if x == 5: print 'find 5' break else: print 'can not find 5!' #can not find 5!
NP :
find = False for x in xrange(1,5): if x == 5: find = True print 'find 5' break if not find: print 'can not find 5!' #can not find 5!
Der else-Teil von for...else... wird verwendet, um Situationen zu behandeln, in denen es keine Unterbrechung durch die for-Schleife gibt. Damit müssen wir keine Statusvariablen festlegen, um zu prüfen, ob die for-Schleife ausbricht, was einfach und praktisch ist.
Ersatz des ternären Symbols
P:
a = 3 b = 2 if a > 2 else 1 #b = 2
NP :
if a > 2: b = 2 else: b = 1 #b = 2
Wenn Sie C-Programmiererfahrung haben, suchen Sie nach Alternativen zu A : B ? Sie werden vielleicht feststellen, dass A und B oder C gut aussehen, aber b = a > 1 und False oder True gibt True zurück, obwohl die eigentliche Absicht darin bestehen sollte, False zurückzugeben.
Die Verwendung von b = False, wenn a > 1, sonst gibt True False korrekt zurück, es handelt sich also um einen authentischen ternären Symbolersatz.
Aufzählen
P:
array = [1, 2, 3, 4, 5] for i, e in enumerate(array,0): print i, e #0 1 #1 2 #2 3 #3 4 #4 5
NP:
for i in xrange(len(array)): print i, array[i] #0 1 #1 2 #2 3 #3 4 #4 5
Mit enumerate können Sie den Index und den Wert gleichzeitig herausnehmen und vermeiden, dass der Index zum Abrufen des Werts verwendet wird. Der zweite Parameter von enumerate kann die Startposition des Indexindex anpassen. Der Standardwert ist 0.
Verwenden Sie zip, um Schlüssel-Wert-Paare zu erstellen
P:
keys = ['Name', 'Sex', 'Age'] values = ['Tim', 'Male', 23] dic = dict(zip(keys, values)) #{'Age': 23, 'Name': 'Tim', 'Sex': 'Male'}
NP:
dic = {} for i,e in enumerate(keys): dic[e] = values[i] #{'Age': 23, 'Name': 'Tim', 'Sex': 'Male'}
Die Zip-Methode gibt ein Tupel zurück, mit dem einfach und klar Schlüssel-Wert-Paare erstellt werden.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Regelmäßige Ausdrücke sind leistungsstarke Tools für Musteranpassung und Textmanipulation in der Programmierung, wodurch die Effizienz bei der Textverarbeitung in verschiedenen Anwendungen verbessert wird.

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...
