mémo python utilisant l'opérateur perl-ternaire

N'y a-t-il pas un opérateur ternaire?

―― J'aime l'opérateur ternaire (opérateur conditionnel) ~ (J'ai été choqué lorsqu'un nouvel employé ne comprenait pas ...)

>>> a = True
>>> b = a ? "OK" : "NG"
  File "<stdin>", line 1
    b = a ? "OK" : "NG"
          ^
SyntaxError: invalid syntax
>>> b = "OK" if a else "NG"
>>> print(b)
OK

«Je pense que c'est plus naturel en anglais. (Je n'y suis pas encore habitué) --Bien qu'il existe un moyen d'écrire `$ b =" OK "if (a);` `comme un suffixe si en perl.

Opérateur ternaire complexe

sh-3.2$ perl -le '$a=0;$b=($a==0)?"ZERO":($a==1)?"ONE":($a==2)?"TWO":"TAKUSAN!";print $b' 
ZERO
sh-3.2$ perl -le '$a=1;$b=($a==0)?"ZERO":($a==1)?"ONE":($a==2)?"TWO":"TAKUSAN!";print $b'
ONE
sh-3.2$ perl -le '$a=2;$b=($a==0)?"ZERO":($a==1)?"ONE":($a==2)?"TWO":"TAKUSAN!";print $b'
TWO
sh-3.2$ perl -le '$a=3;$b=($a==0)?"ZERO":($a==1)?"ONE":($a==2)?"TWO":"TAKUSAN!";print $b' 
TAKUSAN!

―― Que se passe-t-il si vous écrivez ceci comme python?

>>> a=0
>>> b = "ZERO" if a == 0 else "ONE" if a == 1 else "TWO" if a == 2 else "TAKUSAN!"
>>> b
'ZERO'
>>> a=1
>>> b = "ZERO" if a == 0 else "ONE" if a == 1 else "TWO" if a == 2 else "TAKUSAN!"
>>> b
'ONE'
>>> a=2
>>> b = "ZERO" if a == 0 else "ONE" if a == 1 else "TWO" if a == 2 else "TAKUSAN!"
>>> b
'TWO'
>>> a=3
>>> b = "ZERO" if a == 0 else "ONE" if a == 1 else "TWO" if a == 2 else "TAKUSAN!"
>>> b
'TAKUSAN!'

――Il peut être assez difficile de comprendre si elle est continue ...

Je le veux après tout ~

――Cela peut être difficile à comprendre, mais vous devriez l'utiliser ~ ――Est-ce contre le concept de design de python?

Recommended Posts

mémo python utilisant l'opérateur perl-ternaire
Notes sur l'utilisation de sous-processus Python
notes python pour l'utilisation de variables spéciales perl
Remarques sur l'utilisation de MeCab depuis Python
Remarques sur l'installation de Python à l'aide de PyEnv
Notes sur l'utilisation de rstrip avec python.
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Mémo de raclage Python
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Note d'apprentissage Python_000
Notes d'apprentissage Python
Notes de débutant Python
Note d'apprentissage Python_006
Commencez à utiliser Python
notes de python C ++
Mémo opérateur Python 3
Note d'apprentissage Python_005
Notes de grammaire Python
Note sur la bibliothèque Python
Remarques sur l'utilisation de python (pydev) avec eclipse
Opérateur Trinity (Python)
notes personnelles python
Scraping à l'aide de Python
mémo pandas python
Note d'apprentissage Python_001
notes d'apprentissage python
Notes d'installation de Python3.4
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Remarques sur l'utilisation de dict avec python [Competition Pro]
[Python] Remarques sur l'accélération des algorithmes génétiques à l'aide du multitraitement
Manipuler Redmine à l'aide de Python Redmine
notes personnelles en python manquantes
Séquence de Fibonacci utilisant Python
Notes de développement de package Python
Nettoyage des données à l'aide de Python
notes d'utilisation du décorateur python
Mémo du package d'adresse IP Python
Utilisation des packages Python #external
Notes sur le format Python Pickle
Câblage Communication Pi-SPI avec Python
Premier mémo divers sur Python
Calcul de l'âge à l'aide de python
Matlab => Notes de migration Python
Rechercher sur Twitter avec Python
Remarques sur l'affectation Python3
Identification de nom à l'aide de python
Remarques sur l'utilisation d'Alembic
Essayez d'utiliser Tweepy [Python2.7]
Python essayer / sauf mémo
À propos de la priorité de surcharge de l'opérateur Python
Notes sur le flacon de framework Python
Notes minimales lors de l'utilisation de Python sur Mac (édition Homebrew)
Aplatir à l'aide du rendement Python de
Scraping à l'aide de Python 3.5 async / await
Enregistrer des images à l'aide de requêtes python3
[S3] CRUD avec S3 utilisant Python [Python]
Mémo d'apprentissage O'Reilly python3 Primer