Ich denke, dass die Einschlussnotation von Python berühmt ist (?) Als Schreibstil, der Python eigen ist. Dieses Mal werde ich den grundlegenden Teil einer solchen Einschlussnotation zusammenfassen. Insbesondere geht es um Listeneinschlussnotation und Generatorausdruck.
Ich denke, die Notation der Listeneinbeziehung ist besonders berühmt.
python
print([i for i in range(0, 10)])
Dies allein gibt eine Liste mit Zahlen von 0 bis 9 aus.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Es ist sehr einfach zu machen. Natürlich sind noch viel mehr Dinge möglich.
python
print('¥n'.join(['FizzBuzz' if i%15 == 0 else
'Fizz' if i%3 == 0 else
'Buzz' if i%5 == 0 else
str(i) for i in range(1, 101)]))
Das ist Fizz Buzz. Das erste, was Sie tun müssen, wenn Sie eine neue Sprache lernen. Zahlen von 1 bis 100 werden der Reihe nach angezeigt, Fizz wird für Vielfache von 3 angezeigt, Buzz wird für Vielfache von 5 angezeigt und FizzBuzz wird für Vielfache von 3 und 5 anstelle von Zahlen angezeigt. Übrigens, wenn Sie es ausführen, werden 1 bis 100 einzeln mit Zeilenumbrüchen angezeigt. Das ist der Teil von '\ n'.join.
Ich meine, es ist etwas, das ich selbst schreibe, aber es ist ein ziemlich aggressiver Code ... Dies ist, wenn ich das nächste Mal eine bessere Schreibweise einführe, also wage ich es, sie so zu schreiben. Lass uns als nächstes gehen.
Generatortyp ... Ein schwieriges Wort ist aufgetaucht ... Um herauszufinden, was ein Generatorausdruck ist, müssen wir erklären, was ein Generator ist, und um eine Generalta zu erklären, müssen wir einen Iterator erklären und einen Iterator qs weiter erklären. Wow drftgy Fujiko lp; @: (Ich kann es das nächste Mal als einen anderen Artikel posten)
Einfach ausgedrückt, es ist ein praktischer Typ, der schnell eine Funktion in Klammern erstellen und schnell verwenden kann.
python
print(i for i in range(0,10))
Es fühlt sich fast genauso an wie die vorherige Notation zur Aufnahme von Listen. Der Unterschied ist, dass es kein [] gibt. Wie wird es zu diesem Zeitpunkt ausgegeben?
<generator object <genexpr> at 0x10d747b48>
Klicken Sie hier für die Ausgabe. Es ist völlig anders als die vorherige Liste! Dies macht keinen Sinn, vergessen Sie also nicht [], wenn Sie in Inclusion schreiben.
Es gibt jedoch einige Male, in denen diese Generatorformel zweckmäßig ist.
print('¥n'.join((i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)))
Ja. Ich bin der Meinung, dass die Informationsmenge in einer Zeile ziemlich groß ist, aber ein Teil des Codes wurde in einer Zeile geschrieben. Wie Sie sich vorstellen können, ist dies FizzBuzz. Die Ausgabe hat genau das gleiche Format wie zuvor.
Sie können es nicht so schreiben, indem Sie die Listeneinschlussnotation verwenden! (Ist es nicht?) Sie können den Code über der Listeneinschlussnotation in eine Zeile zwingen, aber ... ich hasse es, dass es schwer zu sehen ist. (Da sowohl die Listeneinschlussnotation als auch der Generatorausdruck mehr als 80 Zeichen umfassen, ist tatsächlich ein Zeilenumbruch erforderlich.)
Dieses Mal haben wir nur zwei Typen vorgestellt, aber es scheint, dass Sie auch damit ziemlich viel anfangen können! Vor allem gefällt mir die Einschlussnotation, weil sie wie Pythonic-Code aussieht. Danach denke ich, dass es besser ist, den Ort, an dem der Generatortyp verwendet werden kann, aktiv zu nutzen. Wenn es sich um eine Listeneinschlussnotation handelt, wird eine Liste nach der anderen erstellt.
das ist alles.
print('¥n'.join((i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)))
Sie können nicht auf diese Weise schreiben oder die Listeneinschlussnotation verwenden! (Ist es nicht?)
Es tut mir leid, ich kann.
print('¥n'.join([(i%3 == 0)*'Fizz' + (i%5 == 0)*'Buzz' or str(i) for i in range(1, 101)]))
Sie erhalten immer noch genau die gleiche Ausgabe.
Ich habe einen großen Fehler gemacht, dass ich hier keinen Fehler machen sollte, und ich habe sogar das Gefühl, dass der Zweck dieses Artikels völlig verloren gegangen ist ... Ich werde in Zukunft vorsichtig sein.
Recommended Posts