Notation, die beim Erstellen von Listen und Wörterbüchern mit Python verwendet werden kann. Da Python eine langsame for-Schleife hat, können Sie beim Erstellen von Listen und Wörterbüchern die Einschlussnotation verwenden, um sie viel schneller zu machen.
Wenn Sie eine Liste erstellen, sieht es so aus.
new_list = [f(myiter) for myiter in origin_list]
Sie können auch ein Wörterbuch erstellen, indem Sie [] durch {} ersetzen.
new_dict = {indexes[myiter]:f(myiter) \
for myiter in origin_list}
Das Grundmuster ist wie folgt.
[(Ausdruck mit Iterator) für(iterater)in (ursprüngliches iterierbares Objekt)]
Wenn Sie nur ein if verwenden, fügen Sie ** am Ende ** hinzu.
Extrahieren Sie ungerade Zahlen bis zu 10
odd = [i for i in range(10) if i%2 != 0]
# [1,3,5,7,9]
Zu diesem Zeitpunkt funktioniert if als Filter.
Wenn Sie auch else verwenden, fügen Sie ** vor ** für hinzu.
Seltsam ist"odd", Sogar"even"Gib es zurück
xx = ["even" if i%2==0 else "odd" for i in range(10)]
# ['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
Der Grund, warum dem if ein Präfix vorangestellt werden muss, ist, dass das if zu diesem Zeitpunkt ein Teil des ternären Operators ist, im Gegensatz zum vorherigen if.
"gerade" wenn i% 2 == 0 sonst "ungerade" `` `ist ein Ausdruck und wird mit for wiederholt.
~~ Sie können nicht mehrere andere verwenden. ~~ Elif kann nicht verwendet werden, wenn mehrere bedingte Verzweigungen erstellt werden. Dies kann erreicht werden, indem andernfalls mehrere verwendet werden.
xx = [i+j for i in i_list for j in j_list]
xx = [[i+j for i in range(3)] for j in range(5)]
Wenn Sie numpy-Operationen verwenden möchten, übergeben Sie diese an np.array.
xx = np.array([[i+j for i in range(3)] for j in range(5)])
numpy.array ist ziemlich schlau, so dass es doppelt, dreifach und vierfach richtig formen kann.
Ordnen Sie mit (0,0), (1,1), (2,2), ...
xx = [i+j for i,j in zip(mylist_i,mylist_j)]
Sie sind vielleicht so weit gekommen und schon "Uh". Da es in der Listeneinschlussnotation keine Regel für Zeilenumbrüche gibt, wird eine Zeile lang und verschleiert. Wenn es also länger wird, stellen Sie sicher, dass Sie einen korrekten Zeilenumbruch einfügen **.
Wenn Sie im Fall von VSCode \ in die erste Zeile setzen, wird es danach gut formatiert. Eigentlich läuft es mit oder ohne .
#Absoluter Zeilenumbruch bei Verwendung von if
xx = ["even" if i % 2 == 0 else "odd" \
for i in range(10)]
#Wenn der Ausdruck lang ist, fügen Sie am langen Teil eine Pause ein
zz = [np.sin(xx) + np.random.rand(xx.shape) \
for xx in list_xx]
Recommended Posts