[Python] andとorの使い方を解説
Pythonでは、and
とor
は論理演算子として使用され、条件式の評価に用いられます。
and
は両方の条件が真の場合にのみ真を返し、最初に偽と評価される条件を返します。
一方、or
は少なくとも一方の条件が真であれば真を返し、最初に真と評価される条件を返します。
これらの演算子は、条件分岐やループ内での複雑な条件設定に役立ちます。
また、短絡評価を行うため、無駄な計算を避けることができます。
andとorの基本的な使い方
andの基本
andの基本的な構文
and
は、複数の条件がすべて真である場合に真を返す論理演算子です。
基本的な構文は以下の通りです。
condition1 and condition2
例えば、次のように使用します。
x = 10
y = 20
result = (x > 5) and (y < 30) # True
andの評価順序
and
演算子は左から右に評価されます。
最初の条件が偽の場合、残りの条件は評価されません。
これを短絡評価と呼びます。
x = 0
result = (x != 0) and (10 / x > 1) # ここでは10 / xは評価されない
andの短絡評価(ショートサーキット)
短絡評価により、最初の条件が偽であれば、次の条件は評価されず、全体の結果は偽になります。
これにより、エラーを回避することができます。
x = 0
result = (x != 0) and (10 / x > 1) # 10 / xは評価されないため、エラーは発生しない
orの基本
orの基本的な構文
or
は、複数の条件のうち少なくとも1つが真であれば真を返す論理演算子です。
基本的な構文は以下の通りです。
condition1 or condition2
例えば、次のように使用します。
x = 10
y = 5
result = (x < 5) or (y > 1) # True
orの評価順序
or
演算子も左から右に評価されます。
最初の条件が真の場合、残りの条件は評価されません。
これも短絡評価の一種です。
x = 10
result = (x > 5) or (10 / 0 > 1) # ここでは10 / 0は評価されない
orの短絡評価(ショートサーキット)
短絡評価により、最初の条件が真であれば、次の条件は評価されず、全体の結果は真になります。
これにより、エラーを回避することができます。
x = 10
result = (x > 5) or (10 / 0 > 1) # 10 / 0は評価されないため、エラーは発生しない
andとorの実践例
条件分岐での使用
if文でのandの使用例
if
文では、and
を使って複数の条件を組み合わせることができます。
以下は、2つの条件が両方とも真である場合に実行される例です。
age = 25
income = 50000
if age > 18 and income > 30000:
print("条件を満たしています。")
条件を満たしています。
if文でのorの使用例
if
文でor
を使用すると、いずれかの条件が真であれば実行されます。
以下は、いずれかの条件が満たされる場合の例です。
age = 16
has_permission = True
if age < 18 or has_permission:
print("参加が許可されています。")
参加が許可されています。
ループでの使用
while文でのandの使用例
while
文でもand
を使って条件を組み合わせることができます。
以下は、2つの条件が両方とも真である限りループを続ける例です。
count = 0
max_count = 5
while count < max_count and count >= 0:
print(count)
count += 1
0
1
2
3
4
while文でのorの使用例
while
文でor
を使用すると、いずれかの条件が真である限りループを続けます。
以下は、いずれかの条件が満たされる限りループを続ける例です。
count = 0
while count < 5 or count == -1:
print(count)
count += 1
0
1
2
3
4
複数条件の組み合わせ
andとorの組み合わせ例
and
とor
を組み合わせて、より複雑な条件式を作成することができます。
以下は、両方の条件を組み合わせた例です。
age = 20
has_permission = False
if (age >= 18 and has_permission) or age > 21:
print("アクセスが許可されました。")
else:
print("アクセスが拒否されました。")
アクセスが拒否されました。
複雑な条件式の作成
複雑な条件式を作成することで、より詳細な条件分岐が可能になります。
以下は、複数の条件を組み合わせた例です。
temperature = 30
is_raining = False
is_sunny = True
if (temperature > 25 and not is_raining) or is_sunny:
print("外に出かけましょう!")
else:
print("家にいましょう。")
外に出かけましょう!
andとorの応用
リスト内包表記での使用
andを使ったリスト内包表記
リスト内包表記を使用すると、条件に基づいて新しいリストを簡潔に作成できます。
and
を使った例は以下の通りです。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_and_greater_than_five = [num for num in numbers if num % 2 == 0 and num > 5]
print(even_and_greater_than_five)
[6, 8, 10]
orを使ったリスト内包表記
or
を使ったリスト内包表記の例は以下の通りです。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_or_less_than_three = [num for num in numbers if num % 2 == 0 or num < 3]
print(even_or_less_than_three)
[1, 2, 4, 6, 8, 10]
関数内での使用
andを使った関数の例
関数内でand
を使用することで、複数の条件を満たす場合に特定の処理を行うことができます。
以下はその例です。
def is_valid_user(age, has_permission):
return age >= 18 and has_permission
print(is_valid_user(20, True)) # True
print(is_valid_user(16, False)) # False
True
False
orを使った関数の例
or
を使った関数の例は以下の通りです。
def can_access_resource(age, has_permission):
return age >= 18 or has_permission
print(can_access_resource(16, True)) # True
print(can_access_resource(16, False)) # False
True
False
データフィルタリング
andを使ったデータフィルタリング
データフィルタリングにand
を使用することで、複数の条件を満たすデータを抽出できます。
以下はその例です。
data = [
{"name": "Alice", "age": 25, "income": 50000},
{"name": "Bob", "age": 30, "income": 40000},
{"name": "Charlie", "age": 35, "income": 60000},
]
filtered_data = [person for person in data if person["age"] > 28 and person["income"] > 45000]
print(filtered_data)
[{'name': 'Charlie', 'age': 35, 'income': 60000}]
orを使ったデータフィルタリング
or
を使ったデータフィルタリングの例は以下の通りです。
data = [
{"name": "Alice", "age": 25, "income": 50000},
{"name": "Bob", "age": 30, "income": 40000},
{"name": "Charlie", "age": 35, "income": 60000},
]
filtered_data = [person for person in data if person["age"] < 30 or person["income"] > 45000]
print(filtered_data)
[{'name': 'Alice', 'age': 25, 'income': 50000}, {'name': 'Charlie', 'age': 35, 'income': 60000}]
まとめ
この記事では、Pythonにおけるand
とor
の使い方について詳しく解説しました。
これらの論理演算子を理解することで、条件分岐やデータフィルタリングなど、さまざまな場面でのプログラミングがより効果的になります。
ぜひ、実際のコードにこれらの知識を活かしてみてください。