[PYTHON] Tauschen Sie 1 und 2 aus, ohne die if-Anweisung zu verwenden

Es gab eine Situation, in der ich eine Variable mit 1 oder 2 erhalten und 2 für 1 und 1 für 2 zurückgeben wollte.

Ich habe eine bequeme Methode zum Schreiben von 1 und 2 gelernt, die in einem solchen Fall verwendet werden kann. Machen Sie sich also eine Notiz.

Nachtrag

Wie in den Kommentaren erwähnt, gab es eine einfachere Möglichkeit, es zu schreiben.

Tauschen Sie 1 und 2

n = 1
print(3-n) # 2
m = 2
print(3-m) # 1 

Tauschen Sie 0 und 1

n = 0
print(1-n) # 1
m = 1
print(1-m) # 0 

Verallgemeinerung

Wenn $ x $ entweder $ n $ oder $ n-1 $ ist

\begin{eqnarray}
f(x) &=& 2n-1-x\\&=&\left\{
\begin{array}{ll}
n & (x = n-1) \\
n-1 & (x =n)
\end{array}\right.
\end{eqnarray}

Offensichtlich ohne Beweis.

Also, ** Die Geschichte bisher ist genug, so dass Sie den Rest nicht lesen müssen. ** ** **

Die, die Sie nicht lesen müssen (Originalartikel)

Ich werde den Originalartikel vorerst verlassen.

Schreiben durch Vertauschen von 1 und 2

n = 1
print(n%2+1) # 2
m = 2
print(m%2+1) # 1 

nur das.

Denken Sie an andere Zahlen

Dies allein ist kein Artikel, also denken wir an andere Zahlen als Gehirnübung.

Tauschen Sie 0 und 1

Erwägen Sie, 0s und 1s zu tauschen. Es gibt keine Handhabung mit Bool.

n = 1
print((n+1)%2) # 0
m = 0
print((m+1)%2) # 1

erledigt.

Tauschen Sie 2 und 3

Ersetzen Sie auf die gleiche Weise 2 durch 3 und 3 durch 2.

n = 2
print((n+1)%2+2) # 3
m = 3
print((m+1)%2+2) # 2

Tauschen Sie 3 und 4

Versuchen Sie, 3 durch 4 und 4 durch 3 zu ersetzen.

n = 3
print(n%2+3) # 4
m = 4
print(m%2+3) # 3 

Verallgemeinern wir

Die Berechnungsformel ändert sich abhängig davon, ob $ 2n $ und $ 2n-1 $ ausgetauscht werden oder $ 2n $ und $ 2n + 1 $ ausgetauscht werden.

Beim Tauschen von $ 2n $ und $ 2n-1 $

\begin{eqnarray}
f(x) &=&x \bmod 2 +2n-1 \\&=& \left\{
\begin{array}{ll}
2n & (x = 2n-1) \\
2n-1 & (x =2n)
\end{array}
\right.
\end{eqnarray}

Beim Tauschen von $ 2n $ und $ 2n + 1 $

\begin{eqnarray}
f(x) &=&(x+1) \bmod 2 +2n \\&=& \left\{
\begin{array}{ll}
2n & (x = 2n+1) \\
2n+1 & (x =2n)
\end{array}
\right.
\end{eqnarray}

~~ Ich denke beim Schreiben angemessen nach, daher gibt es möglicherweise eine effizientere Schreibweise. Es gab ~~ (oben im Artikel).

Zusammenfassung

Verwenden Sie im Zweifelsfall die if-Anweisung.

Recommended Posts

Tauschen Sie 1 und 2 aus, ohne die if-Anweisung zu verwenden
Bei Verwendung von if und bei Verwendung von while
[Python] Dateivorgang mit der if-Anweisung
Python if-Anweisung
Unbekannte if-Anweisung
[Python] if-Anweisung
Überschussberechnung ohne Verwendung von%
Beim Schreiben einer if-Anweisung mit einem regulären Ausdruck
Blasensortierung ohne Sortierung
Schreiben Sie FizzBuzz ohne "="
Schnelle Sortierung ohne Sortierung
Mit und ohne WSGI
Python grundlegende if-Anweisung
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Überlegen Sie, ob das Programmieren in Python und C ein Anime war
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?