Pythonの演算子の一覧表とわかりやすい解説

演算は、平たく言うと、四則演算、比較演算、論理演算などの計算機能のことです。プログラミングでは、演算子という記号を用いて、この計算処理を行います。

そこで、ここでは、Pythonの

  • 数値演算子
  • 文字列演算子
  • 比較演算子
  • 論理演算子
  • ビット演算子

をそれぞれ解説します。

演算子は、頻繁に使うものなので、ぜひ押さえておきましょう。

なお、変数の代入の際に使う複合代入演算子については、「Pythonの変数の基礎知識」で解説していますので、ご参照ください。

目次

1. Pythonの数値演算子

1.1. 数値演算子一覧

数値演算子は以下の通りです。

 演算子  例  説明
 +  a + b  足し算
 –  a – b  引き算
 *  a*b  掛け算
 /  a/b  割り算
 //  a//b  aをbで割った商の整数値
 %  a%b  aをbで割った時の割り切れなかった余り
 **  a**n  aをn回掛けた数(べき乗)

実際に見ていきましょう。

1.2. 数値演算子の使い方

まずは足し算です。

In [1]:
10 + 3
Out[1]:
13

引き算です。

In [2]:
10 - 3
Out[2]:
7

掛け算です。特に難しいことはありませんね。

In [3]:
10*3
Out[3]:
30

割り算です。

In [4]:
10/3
Out[4]:
3.333333333333333

//演算子は商の整数値です。

In [5]:
10//3
Out[5]:
3

商の余り(剰余)です。

In [6]:
10%3
Out[6]:
1

べき乗です。

In [7]:
10**3
Out[7]:
1000

1.3. Python演算子の優先順位

計算の順番は小学校の算数と同じです。

In [8]:
10 + 3 * 5 -2
Out[8]:
25

計算の優先順位をつけるには括弧を使います。

In [9]:
(10 + 3) * (5 -2)
Out[9]:
39

簡単ですね。

2. Pythonの文字列演算子

続いて文字列の演算子です。

2.1. 文字列演算子一覧

 演算子  例  説明
 +  “a” + “b”  文字列”a”と”b”を連結して、文字列”ab”になる
 * “abc”*n  文字列”abc”をn回繰り返す

確認していきましょう。

2.2. 文字列演算子の使い方

2.2.1. 文字列の結合

+ 演算子を使うと、2つの文字列を連結することができます。

In [1]:
name = "山田" + "さん"
name
Out[1]:
'山田さん'

変数に文字列を指定して、それぞれの変数を連結することもできます。

In [2]:
a = "Pineapple"
b = "Pen"
c = "Apple"
d = "Pen"
a + b + c + d
Out[2]:
'PineapplePenApplePen'

2.2.2. 文字列と数字を連結するにはstr()を使う

文字列と数字を連結する時は注意が必要です。普通に連結すると、以下のように Type Error が出ます。

In [3]:
price = 2500 + "円"
Out[3]:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-0366075fcc9a> in <module>()
----> 1 price = 2500 + "円"
TypeError: unsupported operand type(s) for +: 'int' and 'str'

このタイプエラーが出る原因は、文字列と、文字列ではない数値が混同していることにあります。これを解決するには、str()関数を使って、数値を文字列化することが必要です。

以下をご覧ください。

In [4]:
price = str(2500) + "円"
price
Out[4]:
'2500円'

str()関数を利用すると、以下のような計算式の文字列を作ることができます。

In [5]:
tanka = 80
kosuu = 3
price = str(tanka*kosuu) + "円"
price
Out[5]:
'240円'

2.2.3. 文字列の繰り返し

* 演算子を使うと、文字列を指定回数繰り返すことができます。

In [6]:
"a" * 3
Out[6]:
'aaa'

複数の文字列でも繰り返しを作ることができます。

In [7]:
"abc" * 3
Out[7]:
'abcabcabc'

繰り返し文字を使うと、以下のように簡易的な棒グラフなどを素早く作ることができます。

In [3]:
symbol = "*"
print("東京", symbol * 12)
print("大阪", symbol * 6)
 
東京 ************
大阪 ******

3. Pythonの比較演算子

比較演算子とは a と b の値は等しいか、 a が b より大きいか小さいかといった比較を行う時に使います。

3.1. 比較演算子の一覧

以下が一覧です。

 演算子   例  説明
 ==  a == b は正ではない 2つの値がイコールの時に「正」 
 !=  a != b は正 2つの値がイコールでない時に「正」
 <>  a <> b は正 同上(注1)
 >   a > b は正ではない 左の値が右の値より大きい時に「正」
 <  a < b は正 左の値が右の値より小さい時に「正」
 >=  a >= b は正ではない 左の値が右の値以上の時に「正」
 <=  a <= b は正 左の値が右の値以下の時に「正」
is  a is b は正ではない  2つのオブジェクトが同一の時に「正」
is not  a is not b は正  2つのオブジェクトが同一でない時に「正」

注1:<>は時代遅れの書き方のため新しいコードでは != を使うこと。

3.2. 比較演算子の使い方

Pythonの比較演算子では、比較結果は True か False で表示されます。

以下の例では、a(3) と b(5) は等しくないので、 a == b は False です。

In [1]:
a = 3
b = 5
c = 8
a == b
Out[1]:
False

しかし、 a + b(3+5) と c(8) はともに 8 なので、以下では True となります。

In [2]:
a + b == c
Out[2]:
True

2つの値がイコールでないときに「正」となるのは != です。

以下では a(3) と c(8)は等しくないので True です。

In [3]:
a != c
Out[3]:
True

大きさの比較は > か < で行います。

以下では a(3) は b(5) より大きくないので False です。

In [4]:
a > b
Out[4]:
False

以下では、b(5) は c(8) より大きくないので True です。 

In [5]:
b < c
Out[5]:
True

<= や >= は、値が等しい場合も正となります。

例えば、c(8) は a(3) + b(5) と等しいので、以下の比較では、どちらも True になります。

In [6]:
c <= a + b
Out[6]:
True
In [7]:
c <= a + b
Out[7]:
True

is や is not はリストなどのオブジェクトの比較の際に使います。

以下では list1 と list2 は等しくないので False です。

In [8]:
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
list1 is list2
Out[8]:
False

つまり、 is not で比較すると True になります。

In [8]:
list1 is not list2
Out[8]:
True

4. Pythonの論理演算子

論理演算子は、論理積、論理和、否定といった論理式を扱うものです。

4.1. 論理演算子の一覧

 演算子  例  説明
 and  a and b  論理積。a と b の両方が 「正」の時「正」。一方でも「否」なら「否」。
 or  a or b  論理和。a か b のどちらか一方でも「正」の時「正」。両方とも「否」なら「否」。
 not  a not b  否定。 a が「正」なら「否」。a が「否」なら「正」。

早速見ていきましょう。

4.2. 論理演算子の使い方

4.2.1. 論理積(and)

以下では、両方とも True なので、論理積は True になります。

In [1]:
True and True
Out[1]:
True

こちらの場合は、片方が False なので論理積も False です。

In [2]:
True and False
Out[2]:
False

4.2.2. 論理和(or)

論理和では、双方が「否」の時のみ False になります。

つまり以下では True です。

In [3]:
True or True
Out[3]:
True
In [4]:
True or False
Out[4]:
True

以下のように、双方が「否」の時に False になります。

In [5]:
False and False
Out[5]:
False

4.2.3. 否定(not)

否定はそのままなので分かりやすいですね。

「正」の否定は「否」なので False です。

In [6]:
not True
Out[6]:
False

「否」の否定は「正」なので True です。

In [7]:
not False
Out[7]:
True

4.3. 比較演算子と論理演算子の組み合わせ

次の例では、a は50以上、100以下で、どちらも「正」ですので、論理積(and)は True です。

In [8]:
a = 80
(a >= 50) and (a <= 100)
Out[8]:
True

以下では、b は50以上ですが、100以下ではないので、False になります。

In [9]:
b = 110
(b >= 50) and (b <= 100)
Out[9]:
False

論理和(or)は、どちらか一方が「正」ならば True です。

以下の例では a は OK ではないので「否」ですが、b は OK なので「正」です。論理和(or)は、どちらか一方でも正しければ「正」なので True となります。

In [10]:
a = "NG" ; b = "OK"
(a == "OK") and (b == "OK")
Out[10]:
True

4.4. True と False , 1 と 0

Pythonの数値処理では、True と False が使われた時、それぞれ 1 と 0 として扱われます。

そのため、以下のように True + False は 1 + 0 = 1 になります。

In [11]:
True + False
Out[11]:
1

True + True だと 1 + 1 = 2 になります。

In [12]:
True + True
Out[12]:
2

反対に、 1 and 1 は True and True と同じですし、 1 or 0 は True or False と同じです。

In [13]:
1 and 1
Out[13]:
1
In [14]:
1 or 0
Out[14]:
1

なお、論理式で、 True, False, 0, 1 以外の値が使われた時、値の大きさに関わらず、 or では左項が、 and では右項が出力されます。

In [15]:
2 or 3
Out[15]:
2
In [16]:
2 and 3
Out[16]:
3

5. ビット演算子

ビット演算子は、2進数の値をビットごとに演算するものです。画像の合成などでよく活用されます。

5.1. ビット演算子一覧

 演算子  例  説明
 &  a & b  論理積(AND。両ビットとも1の時1)
 |  a | b  論理和(OR。どちらかのビットが1ならば1)
 ^  a^b  排他的論理和(XOR。比較したビットの値が異なる時1)
 –  -a  ビット反転(NOT。ビットの1と0を反転させる)
 <<  a<<1  左シフト。ビットを左にずらす。値は2倍になる。
 >>  a>>1 右シフト。ビットを右にずらす。値は1/2になる。

5.2. ビット演算の使い方

例えば、0b0101 と 0b0011 を、 AND, OR, XOR でビット演算すると、それぞれ以下のようになります。なお、 0b は2進数であることを示す記号です。

& (AND)では、両方とも 1 の桁だけ 1 となります。Pythonでは、演算結果は10進数で示されます。bin()を使うと、2進数の文字列で出力することができます。

In [1]:
a = 0b0101
b = 0b0011
bin(a & b)
Out[1]:
'0b1'

| (OR)では、どちらか一方が1であれば、その桁のは1となります。

In [2]:
bin(a|b)
Out[2]:
'0b111'

^ (XOR)では、桁の値が一致しない時だけ1となります。

In [3]:
bin(a^b)
Out[3]:
'0b110'

– (NOT)は、ビット反転なので、0b0101 は 0b1010 になります。

In [4]:
bin(-a)
Out[4]:
'-0b101'

5.3. 左シフトと右シフト

ビット演算は2進数なので、左シフトすると値は2倍に、右シフトすると値は1/2になります。

10進数では、10を左シフトして100にすると10倍に、右シフトして1にすると1/10になりますね。これと同じで、2進数では、左シフトは2倍、右シフトは1/2です。

In [5]:
a = 0b001011
bin(a << 1)
Out[5]:
'0b10110'
In [6]:
bin(a & b)
Out[6]:
'0b101'

5.4. ビットマスク

ビットの中の取り出したい部分を、1 にした値とANDすると抜き出すことができます。これを「ビットマスク」と言います。

以下の例では、変数 a に指定された 0b100110 のうち、下3桁の 110 を取り出しています。

In [7]:
a = 0b100110
bin(a & 0b111)
Out[7]:
'0b110'

途中の数桁を取り出したい場合は、値をシフトしてからビットマスクをします。

以下の例では、まず 0b10101 を右へシフトして、0b1010 することによって、 変数 a の右から2,3桁目を取り出しています。

In [8]:
a = 0b10101
bin(a>>1 & 0b11)
Out[8]:
'0b10'

6. まとめ

いかがだったでしょうか?

Pythonの

  • 数値演算子
  • 文字列演算子
  • 比較演算子
  • 論理演算子
  • ビット演算子

をそれぞれ解説しました。

演算子は、頻繁に使うものなので、いつでも見られるようにしておくと良いでしょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (1件)

  • “is” に関してですが、内容を比べる、というよりも id (?) を比べます。
    なので、以下の例でも False を返します。
    list1 = [0, 1, 2]
    list2 = [0, 1, 2]
    list1 is list2
    結果: False

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる