Python-Komprehensionen

Python-Komprehensionen sind eine einzigartige Art der Datenverarbeitung, die aus einer Datenfolge eine neue Datenfolgestruktur aufbauen kann.

Python-Komprehensionen sind eine leistungsstarke und prägnante Syntax, die sich zum Generieren von Listen, Dictionaries, Sets und Generatoren eignet.

Bei der Verwendung von Komprehensionen müssen Sie auf die Lesbarkeit achten und versuchen, Ausdrücke prägnant zu halten, um die Lesbarkeit und Wartbarkeit des Codes nicht zu beeinträchtigen.

Python unterstützt Comprehensions für verschiedene Datenstrukturen:

  • Listen-Comprehension
  • Wörterbuch-(dict-)Comprehension
  • Mengen-Comprehension
  • Tupel-Comprehension

Listen-Comprehension

Das Format der Listen-Comprehension ist:

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res: der Ausdruck zum Erzeugen von Elementen der Liste, der eine Funktion mit einem Rückgabewert sein kann.
  • for out_exp in input_list: über input_list iterieren und out_exp in den Ausdruck out_exp_res übergeben.
  • if condition: eine Bedingungsanweisung, die Werte in der Liste herausfiltern kann, die die Bedingung nicht erfüllen.

String-Listen mit einer Länge kleiner oder gleich 3 herausfiltern und die verbleibenden in Großbuchstaben umwandeln:

Beispiel

>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
>>> new_names = [name.upper()for name in names if len(name)>3]
>>> print(new_names)
['ALICE', 'JERRY', 'WENDY', 'SMITH']

Berechne ganze Zahlen innerhalb von 30, die durch 3 teilbar sind:

Beispiel

>>> multiples = [i for i in range(30) if i % 3 == 0]
>>> print(multiples)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

Wörterbuch-Komprehension

Das grundlegende Format der Wörterbuch-Komprehension:

{ key_expr: value_expr for value in collection }

oder 

{ key_expr: value_expr for value in collection if condition }

Erstelle ein Wörterbuch mit Zeichenketten und ihren Längen:

Beispiel

listdemo = ['Google','Example', 'Taobao']
# Verwende die Zeichenketten in der Liste als Schlüssel und die Längen der Zeichenketten als Werte, um Schlüssel-Wert-Paare zu bilden
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Example': 6, 'Taobao': 6}

Gib drei Zahlen an, verwende die drei Zahlen als Schlüssel und die Quadrate der drei Zahlen als Werte, um ein Dictionary zu erstellen:

Beispiel

>>> dic = {x: x**2 for x in (2, 4, 6)}
>>> dic
{2: 4, 4: 16, 6: 36}
>>> type(dic)
<class 'dict'>

Mengen-Comprehension

Das grundlegende Format der Mengen-Comprehension:

{ expression for item in Sequence }
oder 
{ expression for item in Sequence if conditional }

Berechnen Sie die Quadrate der Zahlen 1, 2, 3:

Beispiel

>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}

Ermitteln Sie Buchstaben, die nicht "abc" sind, und geben Sie sie aus:

Beispiel

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'d', 'r'}
>>> type(a)
<class 'set'>

Tupel-Comprehension (Generator-Ausdruck)

Tupel-Comprehension kann Datentypen wie Range-Intervalle, Tupel, Listen, Dictionaries und Sets verwenden, um schnell ein Tupel zu erzeugen, das bestimmte Anforderungen erfüllt.

Das grundlegende Format der Tupel-Comprehension:

(expression for item in Sequence )
oder 
(expression for item in Sequence if conditional )

Die Verwendung der Tupel-Comprehension ist genau dieselbe wie bei der Listen-Comprehension, außer dass die Tupel-Comprehension()runde Klammern verwendet, um jeden Teil einzuschließen, während die Listen-Comprehension eckige Klammern verwendet[]; zusätzlich ist das von der Tupel-Comprehension zurückgegebene Ergebnis ein Generatorobjekt.

Zum Beispiel können wir den folgenden Code verwenden, um ein Tupel zu erzeugen, das die Zahlen 1-9 enthält:

Beispiel

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # Der zurückgegebene Wert ist ein Generatorobjekt

>>> tuple(a)       # Mit der Funktion tuple() können Sie das Generator-Objekt direkt in ein Tupel umwandeln
(1, 2, 3, 4, 5, 6, 7, 8, 9)
Andere Erweiterungen