** Hinweise zu effektivem Python ** Punkt 8: Vermeiden Sie mehr als einen Ausdruck in der Listeneinschlussnotation (S. 16-18).
#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