Was sind die versteckten Tricks von Python?

王林
Freigeben: 2023-04-24 11:16:07
nach vorne
824 Leute haben es durchsucht

1. ... Objekt

Ja, Sie haben es richtig gelesen, es ist „...“

In Python ... stellt es ein Objekt namens Ellipsis dar. Laut offizieller Beschreibung handelt es sich um einen speziellen Wert, der normalerweise als Platzhalter für eine leere Funktion oder für Slicing-Operationen in Numpy verwendet werden kann.

Zum Beispiel:

def my_awesome_function():
...
Nach dem Login kopieren

ist äquivalent zu:

def my_awesome_function():
Ellipsis
Nach dem Login kopieren

Natürlich können Sie auch pass oder string als Platzhalter verwenden:

def my_awesome_function():
pass
Nach dem Login kopieren
def my_awesome_function():
"An empty, but also awesome function"
Nach dem Login kopieren

Ihre endgültige Wirkung ist die gleiche.

Lassen Sie uns darüber sprechen, wie Objekte in Numpy funktionieren. Erstellen Sie ein 3x3x3-Matrix-Array und rufen Sie dann die zweite Spalte aller innersten Matrizen ab:

>>> import numpy as np
>>> array = np.arange(27).reshape(3, 3, 3)
>>> array
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
 [[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
 [[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
Nach dem Login kopieren

Um die zweite Spalte der innersten Matrix zu erhalten, verwenden Sie die traditionelle Methode könnte so aussehen:

>>> array[:, :, 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
Nach dem Login kopieren

Wenn Sie ... Objekt verwenden, sieht es so aus:

>>> array[..., 1]
array([[ 1, 4, 7],
 [10, 13, 16],
 [19, 22, 25]])
Nach dem Login kopieren

Bitte beachten Sie jedoch, dass ... Objekte nur in Numpy verfügbar sind, nicht in in Python integrierten Arrays.

2. Das Dekomprimieren des iterativen Objekts

Das Dekomprimieren des iterativen Objekts ist eine sehr praktische Funktion:

>>> a, *b, c = range(1, 11)
>>> a
1
>>> c
10
>>> b
[2, 3, 4, 5, 6, 7, 8, 9]
Nach dem Login kopieren

oder:

>>> a, b, c = range(3)
>>> a
0
>>> b
1
>>> c
2
Nach dem Login kopieren

Anstatt Code wie diesen zu schreiben:

>>> lst = [1]
>>> a = lst[0]
>>> a
1
>>> (a, ) = lst
>>> a
1
Nach dem Login kopieren

Sie können es auch auf die gleiche Weise aktualisieren als Dekomprimierung des iterativen Objekts. Elegante Zuweisungsoperation:

>>> lst = [1]
>>> [a] = lst
>>> a
1
Nach dem Login kopieren

Obwohl dies etwas dumm erscheint, ist es meiner persönlichen Meinung nach eleganter als die vorherige Schreibweise.

3. Die Kunst der Erweiterung

Es gibt verschiedene seltsame Möglichkeiten, Arrays zu erweitern, wie zum Beispiel:

>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> flattened = [elem for sublist in l for elem in sublist]
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Nach dem Login kopieren

Wenn Sie ein gewisses Verständnis von Reduzieren und Lambda haben, wird empfohlen, eine elegantere Methode zu verwenden:

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Nach dem Login kopieren

combine Reduzieren und LambdaSie können Spleißvorgänge für jedes Unterarray im l-Array ausführen.

Natürlich gibt es einen magischeren Weg:

>>> sum(l, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> # 其实相当于 [] + [1, 2, 3] + [4, 5, 6] + [7, 8, 9]
Nach dem Login kopieren

Ja, durch Ausführen der Summenoperation für das zweidimensionale Array kann jedes Element im zweidimensionalen Array durch „Addition“ zusammengefügt werden.

Wenn Sie eine Summenoperation für ein dreidimensionales Array ausführen, kann dieses in ein zweidimensionales Array umgewandelt werden. Wenn Sie zu diesem Zeitpunkt eine Summenoperation für das zweidimensionale Array ausführen, ist dies möglich zu einem eindimensionalen Array erweitert werden.

Obwohl diese Technik großartig ist, empfehle ich sie nicht, weil die Lesbarkeit so schlecht ist.

4. Unterstrich _-Variable

Immer wenn Sie einen Ausdruck im Python-Interpreter, in IPython oder in der Django-Konsole ausführen, bindet Python den Ausgabewert in die _-Variable:

>>> nums = [1, 3, 7]
>>> sum(nums)
11
>>> _
11
>>>
Nach dem Login kopieren

Da es sich um eine Variable handelt, können Sie sie unter überschreiben Jederzeit, oder bedienen Sie es wie eine normale Variable:

>>> 9 + _
20
>>> a = _
>>> a
20
Nach dem Login kopieren

5. Mehrere Verwendungsmöglichkeiten von else

Viele Leute wissen nicht, dass else an vielen Stellen verwendet werden kann in Schleifen Es wird bei der Ausnahmebehandlung verwendet.

Schleife

Wenn Sie feststellen müssen, ob eine bestimmte Logik in der Schleife verarbeitet wird, tun Sie normalerweise Folgendes:

found = False
a = 0
while a < 10:
if a == 12:
found = True
a += 1
if not found:
print("a was never found")
Nach dem Login kopieren

Wenn else eingeführt wird, können wir eine Variable weniger verwenden:

a = 0
while a < 10:
if a == 12:
break
a += 1
else:
print("a was never found")
Nach dem Login kopieren
Ausnahmebehandlung

Wir können verwenden Versuchen Sie es.. außer ... verwenden Sie else, um die Logik zu schreiben, wenn eine Ausnahme nicht abgefangen wird:

In [13]: try:
...: {}[&#39;lala&#39;]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Key is missing
Nach dem Login kopieren

Wenn das Programm keine Ausnahme hat, wird es auf diese Weise den else-Zweig verwenden:

In [14]: try:
...: {&#39;lala&#39;: &#39;bla&#39;}[&#39;lala&#39;]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Else here
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas sind die versteckten Tricks von Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!