Python 基本演算子完全ガイド:算術、比較、論理、ビット演算など
演算子とは、オペランドの値を操作する構造のことです。
式 4 + 5 = 9 を考えます。ここで、4 と 5 はオペランドと呼ばれ、+ は演算子と呼ばれます。
演算子の種類
Python 言語は以下の種類の演算子をサポートしています。
- 算術演算子
- 比較(関係)演算子
- 代入演算子
- 論理演算子
- ビット演算子
- メンバーシップ演算子
- アイデンティティ演算子
それぞれの演算子を順に見ていきましょう。
Python 算術演算子
変数 a が 10、変数 b が 20 を保持していると仮定すると:
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| + 加算 | 演算子の両側の値を加算します。 | a + b = 30 |
| - 減算 | 右オペランドを左オペランドから減算します。 | a - b = -10 |
| * 乗算 | 演算子の両側の値を乗算します。 | a * b = 200 |
| / 除算 | 左オペランドを右オペランドで除算します。 | b / a = 2 |
| % 剰余 | 左オペランドを右オペランドで除算し、余りを返します。 | b % a = 0 |
| ** 累乗 | オペランドに対して指数(累乗)計算を実行します。 | a**b = 10の20乗 |
| // 床除算 | オペランドの除算で、結果が小数点以下の桁を削除した商になります。ただし、オペランドのいずれかが負の場合、結果は床関数となり、ゼロから離れる方向(負の無限大方向)に丸められます。 | 9//2 = 4, 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0 |
Python 比較演算子
これらの演算子は、両側の値を比較し、それらの関係を決定します。関係演算子とも呼ばれます。
変数 a が 10、変数 b が 20 を保持していると仮定すると:
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| == | 2つのオペランドの値が等しければ条件は真になります。 | (a == b) は真ではありません。 |
| != | 2つのオペランドの値が等しくなければ条件は真になります。 | (a != b) は真です。 |
| <> | 2つのオペランドの値が等しくなければ条件は真になります。 | (a <> b) は真です。!= 演算子と似ています。 |
| > | 左オペランドの値が右オペランドの値より大きければ条件は真になります。 | (a > b) は真ではありません。 |
| < | 左オペランドの値が右オペランドの値より小さければ条件は真になります。 | (a < b) は真です。 |
| >= | 左オペランドの値が右オペランドの値以上であれば条件は真になります。 | (a >= b) は真ではありません。 |
| <= | 左オペランドの値が右オペランドの値以下であれば条件は真になります。 | (a <= b) は真です。 |
Python 代入演算子
変数 a が 10、変数 b が 20 を保持していると仮定すると:
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| = | 右側のオペランドの値を左側のオペランドに代入します。 | c = a + b は a + b の値を c に代入 |
| += 加算代入 | 右オペランドを左オペランドに加算し、結果を左オペランドに代入します。 | c += a は c = c + a と等価 |
| -= 減算代入 | 右オペランドを左オペランドから減算し、結果を左オペランドに代入します。 | c -= a は c = c - a と等価 |
| *= 乗算代入 | 右オペランドを左オペランドに乗算し、結果を左オペランドに代入します。 | c *= a は c = c * a と等価 |
| /= 除算代入 | 左オペランドを右オペランドで除算し、結果を左オペランドに代入します。 | c /= a は c = c / a と等価 |
| %= 剰余代入 | 2つのオペランドを使用して剰余を求め、結果を左オペランドに代入します。 | c %= a は c = c % a と等価 |
| **= 累乗代入 | オペランドに対して指数計算を実行し、値を左オペランドに代入します。 | c **= a は c = c ** a と等価 |
| //= 床除算代入 | オペランドに対して床除算を実行し、値を左オペランドに代入します。 | c //= a は c = c // a と等価 |
Python ビット演算子
ビット演算子はビット単位で動作し、ビットごとの演算を実行します。a = 60、b = 13 と仮定します。これらの値をバイナリ形式で表すと、それぞれ 0011 1100 と 0000 1101 になります。以下の表は、Python がサポートするビット演算子と、上記 2 つの変数(a と b)をオペランドとした例を示しています。
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
Python がサポートするビット演算子は以下の通りです。
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| & ビットAND | ビットが両オペランドに存在する場合、そのビットを結果にコピーします。 | (a & b) (0000 1100 を意味する) |
| | ビットOR | ビットがいずれかのオペランドに存在する場合、そのビットをコピーします。 | (a | b) = 61 (0011 1101 を意味する) |
| ^ ビットXOR | ビットが一方のオペランドのみにセットされている場合、そのビットをコピーします。 | (a ^ b) = 49 (0011 0001 を意味する) |
| ~ ビット反転 | 単項演算子で、ビットを「反転」させる効果があります。 | (~a) = -61 (符号付き2進数のため、2の補数形式で 1100 0011 を意味する) |
| << 左シフト | 左オペランドの値を、右オペランドで指定されたビット数だけ左にシフトします。 | a << 2 = 240 (1111 0000 を意味する) |
| >> 右シフト | 左オペランドの値を、右オペランドで指定されたビット数だけ右にシフトします。 | a >> 2 = 15 (0000 1111 を意味する) |
Python 論理演算子
Python がサポートする論理演算子は以下の通りです。変数 a が 10、変数 b が 20 を保持していると仮定すると:
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| and 論理AND | 両オペランドが真であれば条件は真になります。 | (a and b) は真です。 |
| or 論理OR | 2つのオペランドのいずれかが非ゼロであれば条件は真になります。 | (a or b) は真です。 |
| not 論理NOT | オペランドの論理状態を反転させます。 | Not(a and b) は偽です。 |
Python メンバーシップ演算子
Python のメンバーシップ演算子は、文字列、リスト、タプルなどのシーケンス内のメンバーシップをテストします。以下の 2 つのメンバーシップ演算子があります。
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| in | 指定されたシーケンス内に変数が見つかれば真、見つからなければ偽と評価されます。 | x in y:x がシーケンス y のメンバーであれば 1 になります。 |
| not in | 指定されたシーケンス内に変数が見つからなければ真、見つかれば偽と評価されます。 | x not in y:x がシーケンス y のメンバーでなければ 1 になります。 |
Python アイデンティティ演算子
アイデンティティ演算子は、2つのオブジェクトのメモリ位置を比較します。以下の 2 つのアイデンティティ演算子があります。
[ 例を表示 ]
| 演算子 | 説明 | 例 |
|---|---|---|
| is | 演算子の両側の変数が同じオブジェクトを指していれば真、そうでなければ偽と評価されます。 | x is y:id(x) が id(y) と等しければ is は 1 になります。 |
| is not | 演算子の両側の変数が同じオブジェクトを指していれば偽、そうでなければ真と評価されます。 | x is not y:id(x) が id(y) と等しくなければ is not は 1 になります。 |
Python 演算子の優先順位
以下の表は、すべての演算子を最高優先順位から最低優先順位の順に示しています。
[ 例を表示 ]
| 番号 | 演算子と説明 |
|---|---|
| 1 | ** 累乗(べき乗) |
| 2 | ~ + - 補数、単項プラスとマイナス(最後の2つのメソッド名は +@ と -@) |
| 3 | * / % // 乗算、除算、剰余、床除算 |
| 4 | + - 加算と減算 |
| 5 | >> << 右と左のビットシフト |
| 6 | & ビット単位 'AND' |
| 7 | ^ | ビット単位排他的 'OR' と通常の 'OR' |
| 8 | <= < > >= 比較演算子 |
| 9 | <> == != 等価演算子 |
| 10 | = %= /= //= -= += *= **= 代入演算子 |
| 11 | is is not アイデンティティ演算子 |
| 12 | in not in メンバーシップ演算子 |
| 13 | not or and 論理演算子 |
Python
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonイテレータ完全ガイド:仕組みと自作方法
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Python 概要:高水準、読みやすい、インタラクティブ、オブジェクト指向
- Python 基礎マスター:構文とファンダメンタルズ完全ガイド
- Java演算子完全ガイド:算術/関係/ビット/論理/代入/三項/instanceof