Ein Liner in Python

In Python ist Einzeiler schwer zu machen, aber nicht unmöglich. Ich denke, dass der Grund, warum Einzeiler in Python schwierig ist, darin besteht, dass nur wenige Dinge ausgedrückt werden können und dass zusammengesetzte Anweisungen nicht in einer Zeile geschrieben werden können. Hier werden wir eine Methode zum Einbeziehen verschiedener Prozesse in einen Ausdruck vorstellen.

Grundlegende Methode

und oder ternärer Operator

if a: f () kann als a und f () geschrieben werden. wenn nicht a: f () kann als a oder f () geschrieben werden. (Wenn Sie mit dem Kurzschluss logischer Operatoren nicht vertraut sind, lesen Sie bitte http://qiita.com/gyu-don/items/a0aed0f94b8b35c43290.) Außerdem hat der ternäre Operator eine etwas unangenehme Syntax. true_value wenn Bedingung sonst false_value

Tapling, Auflistung

Sie können mehrere Ausdrücke zu einem Ausdruck kombinieren, indem Sie ein Taple oder eine Liste erstellen. Sie können den Wert auch an einer bestimmten Stelle abrufen, indem Sie mit [0] oder [-1] am Ende darauf verweisen.

Schleife mit Listeneinschlussnotation

Schleifen sind in Listeneinschlussnotation.

Generator

Insbesondere in Python3 werden Generatorobjekte überall angezeigt. Der Unterschied zwischen einer Liste und einem Generator ist wichtig, insbesondere wenn Sie Nebenwirkungen erwarten. Die Listeneinschlussnotation erstellt eine Liste bis zum letzten Element im laufenden Betrieb. Andererseits wertet der Generator nicht jedes Element aus, bis es von next () aufgerufen wird. Um jedes Element auszuwerten, können Sie entweder als Nächstes selbst aufrufen, list (gen) verwenden oder die Notation zur Aufnahme von Listen für ... in verwenden.

Dies und das mit Lambda

lambda Sie können mit Lambda anonyme Funktionen erstellen, in Python können Sie jedoch nur anonyme Funktionen mit einem einzigen Ausdruck erstellen.

Anstatt zu lassen

Sie können Lambda verwenden, um Variablen zu binden, ohne eine Anweisung abzugeben. Bitte verwenden Sie es in Situationen, in denen es schwierig ist, Semikolon zu verwenden. "(Lambda a, b: a + b) (f (), g ())" realisiert "a = f (); b = g (); a + b".

Führen Sie eine Liste

In Python sind Zuweisungen Anweisungen, in list.append jedoch Ausdrücke. Es kann nützlich sein, eine Liste im Argument zu haben. Beispiel: Ein Ausdruck, der das Ergebnis der Addition von 0 auf 100 zurückgibt, ohne Summe oder Reduktion zu verwenden (lambda t: [t.append(t.pop()+x)or t[0] for x in range(101)][-1])([0])

Rekursiv

Sie müssen keinen komplizierten Y-Kombinator erstellen, sondern nur die Funktion, um ein Argument zu erhalten, das sich selbst empfängt. Beispiel: 1 bis 10 Stockwerke (lambda f: f(10,f))(lambda n,f: n*f(n-1,f) if n>0 else 1)

Dann haben alle ein gutes Python-Leben

Ende.

Recommended Posts

Ein Liner in Python
Python Zundko One Liner
Einzeiler webServer (mit CGI) in Python
Ein Liner, der neunundneunzig in Python ausgibt
Fizzbuzz in Python (in einer Zeile)
Curl -I Python One Liner
Ein Liner, der die Kernauslastung von CPU 1 in Python zu 100% erhöht
DMD in Python 1D
Ein Liner, der mit Python ein Umfangsverhältnis von 1000000 Stellen ausgibt
Segfo Python in einer Zeile
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Behandeln Sie mehrere Python-Versionen in einem Jupyter
CGI Server (1) Python Edition in einer Zeile
Zerlegen Sie Befehlsargumente in einer Zeile in Python
[Python] Bool-Wertinversion in einer Zeile
Ich habe Project Euler 1 in einem Liner geschrieben.
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python