Inklusive Notation von Python (über Liste und Generatorausdruck) [zusätzlich]

Einführung

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.

Listeneinschlussnotation

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

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.)

Impressionen

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.

Nachtrag (02.12.2015)

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

Inklusive Notation von Python (über Liste und Generatorausdruck) [zusätzlich]
Python-Tapple-Einschlüsse und Generatorausdrücke
Python> Verständnis / Inklusive Notation> Listenverständnis
Geschwindigkeit der Listeneinschlussnotation in Python
Python-Liste und Tapples und Kommas
Python-Listeneinschlussnotation und Generator
Über Python und reguläre Ausdrücke
Unterschied zwischen list () und [] in Python
Informationen zu Python Primer-Modulen und bedingten Ausdrücken
Python-Einschlussnotation
Python-Einschlussnotation
Listeneinschlussnotation
[Python] -Liste
Überlappende reguläre Ausdrücke in Python und Java
[Einführung in die Udemy Python3 + -Anwendung] 63. Notation zur Einbeziehung des Generators
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Python-Datenstruktur und interne Implementierung ~ Liste ~
Unterschied zwischen Anhängen und + = in der Python-Liste
[Python Iroha] Unterschied zwischen Liste und Tupel
Effektives Python-Memo Element 7 Verwenden Sie die Listeneinschlussnotation anstelle von Karte und Filter
Ich habe die Geschwindigkeit der Listeneinschlussnotation für und während mit Python2.7 gemessen.
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
Python-Grundlagen: Liste
[Einführung in die Udemy Python3 + -Anwendung] 60. Listeneinschlussnotation
[Python] Generatorfunktion
Liste und Summe
Liste und Numpy
[Python] Reguläre Ausdrücke Reguläre Ausdrücke
Liste des zu verschiebenden und zu merkenden Python-Codes
Hinweis: Listeneinschlussnotation
Python-Listenmanipulation
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
Filtern, Zuordnen, Reduzieren mit js und Python (Es gibt auch Pfeilausdrücke, Lambda-Ausdrücke und Einschlussausdrücke)
[Python] AGC043A (Problemlesefähigkeit und DP) [At Coder]
Mayungos Python-Lernhinweis: Liste der Geschichten und Links
Implementierte List und Bool in Python und SQLite3 (persönliche Notiz)
Schreiben mit Lambda-Ausdruck und Filterfunktion und Schreiben mit Listeneinschlussnotation
Implementieren eines Generators mit Python> Link> Yield und next ()> Yield
Listenverständnis, da operator.methodcaller nicht mit Python 2.5 verwendet werden kann
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Python3-Einschlussnotation (Liste, Wörterbuch), die ich irgendwo gesehen habe
[Python] Komprimieren und dekomprimieren
Liste der Python-Module
Python> Liste> verlängern () oder + =
Python- und Numpy-Tipps
[Python] Pip und Wheel
FizzBuzz in Listeneinschlussnotation
Python Iterator und Generator
Filterliste in Python
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Python unittest assertXXX Liste
Ruby, Python und Map
Notator-Einschlussnotation Taple-Einschlussnotation
Python3-Memo vom Typ Liste / Wörterbuch
[Memo] Python 3-Listensortierung
Python-Eingabe und Ausgabe
Liste der Python-APIs für OpenCV3