三項演算子
真偽判定を普通に分かりやすく記載すると以下のような感じ
a = "True" if True: print(a, "is True") else: print(a, "is False") # True is True
上記だと面倒なので、以下のような記載で1行で条件分岐を記載すると、確認しやすい。
a = "True";print(a, "is True") if True else print(a, "is False") # True is True
True/False (False が False)
for i in [True, False]: a = i; print(a, "is True") if i else print(a, "is False") # True is True # False is False
だけど、'False'という文字列はTrue…。
for i in ["True", "False"]: a = i; print(a, "is True") if i else print(a, "is False") # True is True # False is True
数字 (0 が False)
for i in range(-1,2): a = i; print(a, "is True") if i else print(a, "is False") # -1 is True # 0 is False # 1 is True
ゼロの数値型はFalse
from decimal import * from fractions import * for i in [0, 0.0, 0j, Decimal(0), Fraction(0, 1)]: print(type(i)) a = i; print(a, "is True") if i else print(a, "is False") # <class 'int'> # 0 is False # <class 'float'> # 0.0 is False # <class 'complex'> # 0j is False # <class 'decimal.Decimal'> # 0 is False # <class 'fractions.Fraction'> # 0 is False
空(から)のシーケンスはFalse
for i in [[],(),{},set(),range(0)]: print(type(i)) a = i; print(a, "is True") if i else print(a, "is False") # <class 'list'> # [] is False # <class 'tuple'> # () is False # <class 'dict'> # {} is False # <class 'set'> # set() is False # <class 'range'> # range(0, 0) is False