Pythonの真理値テストとは?__bool__と__len__による真偽判定の基本を解説
真理値テストの基本
Pythonでは、あらゆるオブジェクトを使って真理値(真偽値)のテストを行うことができます。if文やwhile文の条件にオブジェクトを直接指定するだけで、その真偽をチェックできます。
原則として、クラスに定義された__bool__()メソッドがFalseを返す場合、あるいは__len__()メソッドが0を返す場合を除き、オブジェクトの真理値はTrueとみなされます。
Falseと判定される主なケース
定数がFalseまたはNoneである場合。
変数がゼロを表す値を持つ場合。たとえば
0、0.0、Fraction(0, 1)、Decimal(0)、0jなどはすべてFalseと評価されます。空のシーケンスやコレクションである場合。空文字列
''、空リスト[]、空タプル()、空辞書{}、空セットset()、range(0)などの真理値はFalseになります。
また、整数の 0 は False と等価であり、1 は True と等価である点も覚えておくと便利です。
サンプルコード
class A: # クラスAには__bool__メソッドがないため、デフォルトでTrueとみなされる
def __init__(self):
print('This is class A')
a_obj = A()
if a_obj:
print('It is True')
else:
print('It is False')
class B: # クラスBは__bool__メソッドがFalseを返すよう定義されている
def __init__(self):
print('This is class B')
def __bool__(self):
return False
b_obj = B()
if b_obj:
print('It is True')
else:
print('It is False')
myList = [] # 要素が存在しないため、Falseを返す
if myList:
print('It has some elements')
else:
print('It has no elements')
mySet = (10, 47, 84, 15) # 要素が存在するため、Trueを返す
if mySet:
print('It has some elements')
else:
print('It has no elements')実行結果
This is class A It is True This is class B It is False It has no elements It has some elements
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonの辞書(dict)で特定のキーの値を取得・出力する方法
Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。特定のキーに関連付けられた値を取得したい場合は、get()メソッドを使うのが便利です。get()メソッドを使って値を取得するget()メソッドにキーを渡すと、そのキーに対応する値が返されます。>>> D1 = {a: 11, b: 22, c: 33} >>> D1.get(b) 22角括弧([])を使って値を取得するまた、リストと同じように、角括弧の中にキーを指定することでも値を取得できます。>>> D1[c] 33get()メソッドと角括弧の違い両者の大きな違い