Effektives Python-Memo-Element 8 Vermeiden Sie drei oder mehr Ausdrücke in der Listeneinschlussnotation

** Hinweise zu effektivem Python ** Punkt 8: Vermeiden Sie mehr als einen Ausdruck in der Listeneinschlussnotation (S. 16-18).

Zwei oder mehr für Aussagen können in der Einschlussnotation geschrieben werden

#Geben Sie den Inhalt der Matrix in eine Liste aus
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat = [x for row in matrix for x in row]
print(flat)

>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Praktisch! Lassen Sie uns eine etwas komplizierte Verarbeitung durchführen

#Halten Sie sich in der Linie und quadrieren Sie den gesamten Inhalt
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
squared = [[x ** 2 for x in row] for row in matrix]
print(squared)

>>>
[[1, 4, 9], [16, 25, 36], [49, 64, 81]]

Ja, es ist etwas kompliziert, aber immer noch lesbar Fügen wir eine weitere Schleife hinzu!

#Geben Sie den Inhalt einer dreidimensionalen Matrix in eine Liste aus
my_list = [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
flat = [x for sublist1 in my_list for sublist2 in sublist1 for x in sublist2]
print(flat)

>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Es wurde sehr schwer zu sehen. Zu diesem Zeitpunkt gibt es fast keinen Grund für die Einbeziehung der Notation. Schreiben wir mit einer normalen for-Anweisung

#Schreiben Sie mit einer normalen for-Schleife
my_list = [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
flat = []
for sublist1 in my_list:
    for sublist2 in sublist1:
        flat.extend(sublist2)   #Kein Anhang!

print(flat)

>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Dies hat längere Zeilen, ist aber besser lesbar als die vorherige Beschreibung. Das Wichtigste ist eher die Lesbarkeit als die Anzahl der Zeilen!

Recommended Posts

Effektives Python-Memo-Element 8 Vermeiden Sie drei oder mehr Ausdrücke in der Listeneinschlussnotation
Effektives Python-Memo-Element 9 Betrachten Sie einen Generatorausdruck für die Notation großer Einschlüsse
Effektives Python-Memo Punkt 3
EP 8 Vermeiden Sie mehr als zwei Ausdrücke in Listenverständnissen
Effektives Python-Memo Element 11 Verwenden Sie zip, um Iteratoren parallel zu verarbeiten
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Effektives Python-Memo Punkt 10 Aufzählung aus der Reichweite
Effektives Python-Memo Element 7 Verwenden Sie die Listeneinschlussnotation anstelle von Karte und Filter
Sortierte Liste in Python
Python> Liste> verlängern () oder + =
Filterliste in Python
Python3-Memo vom Typ Liste / Wörterbuch
[Memo] Python 3-Listensortierung
Einschlussnotation in Python einrücken
Die findähnliche Sache der Liste in Python
Effektives Python-Memo-Element 19 Geben Sie Schlüsselwortargumenten optionales Verhalten
Effektiver Python-Hinweis Punkt 16 Erwägen Sie, einen Generator zurückzugeben, ohne eine Liste zurückzugeben
Mehrfacher Regressionsausdruck in Python
Wickeln Sie lange Ausdrücke in Python ein
Vermeiden Sie KeyError im Python-Wörterbuch
Vermeiden Sie mehrere Schleifen in Python
Python-Listeneinschlussnotation und Generator
Abrufen von Listenelementen in Python
Ein Memo, das doppelte Anführungszeichen in voller Breite mit regulären Python-Ausdrücken verarbeitet