Dies ist eine Einführung in die Kurzschreibtechnik in Python 3, die mit AtCoder entwickelt wurde. Darüber hinaus ist die Python3-Version von AtCoder 3.4.3, und Sie können möglicherweise keine Funktionen verwenden, die wahrscheinlich verkürzt werden, z. B. F-Strings und Seiuchi-Operator. Es ist nur eine Technik auf AtCoder (ich weiß nicht, ob es woanders verwendet werden kann). Ich finde es chaotisch, weil ich aufschreibe, was ich mir ausgedacht habe. Entschuldigung.
Wenn Sie an eine Standard-Python-Eingabe denken, denken Sie an input (), aber wenn Sie kurz schreiben, wird open (0) eher verwendet als input (). open ist eine Funktion, die eine Datei öffnet. Wenn Sie jedoch 0 als erstes Argument angeben, wird sie aus der Standardeingabe gelesen. Zum Beispiel
4
1
2
3
4
Bei einer Eingabe wie, wenn Sie die erste Zeile in der Variablen n und die verbleibenden Zeilen in der Liste a speichern möchten
n,*a=map(int,open(0))
Kann geschrieben werden als. Ebenfalls,
5 4
1 2 3 4 5
Gegebene Eingabe wie, wenn Sie die erste Zeile in n und k und die zweite Zeile in Liste a speichern möchten
n,k,*a=map(int,open(0).read().split())
Kann geschrieben werden als.
In einigen Fällen kann es nützlich sein, eval zu verwenden. eval führt die als Argument angegebene Zeichenfolge als Ausdruck aus. Daher kann es verkürzt werden, indem die eingegebene Zeichenfolge entsprechend verarbeitet und an eval übergeben wird. Zum Beispiel
10 20
Bei einem Problem, bei dem zwei Zahlen in einer Zeile angegeben werden und das Produkt ausgegeben wird,
print(eval(input().replace(' ','*')))
Kann geschrieben werden als. in diesem Fall, Durch Ersetzen von "" in der Eingabezeichenfolge durch "*"
10*20
Es wird zu einer Zeichenkette, und die Lösung kann erhalten werden, indem dies als Ausdruck ausgeführt wird. Wenn die Einschränkung zwei Zahlen kleiner als 100 hat,
s=input()
print(int(s[:2])*int(s[2:]))
Sie können auch schreiben.
Wenn Sie den Inhalt einer Liste durch Leerzeichen getrennt ausgeben möchten,
print(*a)
Kann geschrieben werden als. Wenn Sie dies von Zeilenumbrüchen trennen möchten
print(*a,sep='\n')
Du kannst es schaffen. Selbst wenn Sie in AtCoder die durch Zeilenumbrüche getrennte Lösung ausgeben möchten, wird sie häufig durch Trennen durch Leerzeichen ausgegeben. YNeos Ich denke, viele Leute denken daran, wenn sie Python Golf hören. Bei Problemen wie der Ausgabe von "Ja", wenn bestimmte Bedingungen erfüllt sind, und "Nein", wenn dies nicht der Fall ist.
print('YNeos'[Bedingter Ausdruck::2])
Und so weiter. Da "Nein" ausgegeben wird, wenn der bedingte Ausdruck wahr wird, wenn die Bedingung gewaltsam umgedreht wird und sie lang wird,
print('NYoe s'[Bedingter Ausdruck::2])
Sie können es auch so machen. In diesem Fall wird 'Nein' (am Ende leer) ausgegeben, wenn der bedingte Ausdruck False wird, aber AtCoder wird auch in einem solchen Fall häufig übergeben.
In Python können Sie zusätzlich zu Zeilenumbrüchen Semikolon als Satztrennzeichen verwenden. Zum Beispiel beim Schreiben mehrerer Prozesse mit einer for-Anweisung
for _ in'_'*n:hoge;fuga;piyo
Und so weiter. Wenn Sie denselben Vorgang n-mal wiederholen, verwenden Sie eine Funktion, die die durch das Argument exec angegebene Zeichenfolge als Ausdruck ausführt.
exec('hoge;fuga;piyo;'*n)
Kann geschrieben werden als.
Da bool eine Unterklasse von int ist, können Sie Operationen für int ausführen. Zum Beispiel, wenn Sie 1 zu a hinzufügen möchten, wenn eine bestimmte Bedingung erfüllt ist, und 1 zu b, wenn sie nicht erfüllt ist.
f=Bedingter Ausdruck
a+=f
b+=1-f
Und so weiter.
Wenn Sie einer Liste eine nachgestellte 0 hinzufügen möchten a
a+=[0]
Fügen Sie einfach eine Liste der Größe 1 wie hinzu
a+=0,
Sie können auch solche Taples hinzufügen. Wenn Sie nur hinzufügen möchten, wenn bestimmte Bedingungen erfüllt sind
a+=[0]*Bedingter Ausdruck
Kann geschrieben werden als import Zum Beispiel
from numpy import*
Wenn Sie wie schreiben, können Sie die NumPy-Funktion verwenden, ohne np hinzuzufügen.
Teilen Sie n durch m (aufrunden)
0--n//m
(n+1)*2
n+1<<1
Oder
-~n*2
(n-1)*2
~-n*2
Hier sind einige Links zu einigen interessanten Dingen, die ABC-A eingereicht hat.
https://atcoder.jp/contests/abc092/submissions/4568294 mit eval
+min(int(input()),int(input()),)+min(int(input()),int(input()),)
Wird als Ausdruck ausgeführt.
https://atcoder.jp/contests/abc115/submissions/4390864 Eingabe kann Argumente ausgeben.
https://atcoder.jp/contests/abc122/submissions/4701952 https://atcoder.jp/contests/abc119/submissions/4376176
Wenn Sie sich etwas einfallen lassen, werde ich es hinzufügen.
Recommended Posts