Python 3演算子

演算子とは何ですか?

この章では、主にPythonの演算子について説明します。

以下は簡単な例です。

4 + 5 = 9

この例では、4と5は被演算子と呼ばれ、+は演算子と呼ばれます

Python言語は、次のタイプの演算子をサポートしています。

  • 算術演算子
  • 比較演算子
  • 代入演算子
  • 論理演算子
  • ビット演算子
  • メンバー演算子
  • アイデンティティ演算子
  • 演算子の優先順位

次に、Python演算子を1つずつ学んでいきましょう。

Python算術演算子

以下は、変数aが10で、変数bが21であると想定します。

演算子説明実例
+加算 – 2つのオブジェクトを足す。a + bは結果31を出力する
減算 – 負の数を取得するか、ある数値を別の数値を引く。a-bは結果-11を出力する
*乗算 – 2つの数値を乗算するか、数回繰り返される文字列を返す。a * bは結果210を出力する
/除算 – xをyで割る。b /aは結果2.1を出力する。
%モジュロ-除算の余りを返す。b%a結果1を出力する。
**べき乗 – xのy乗を返す。a ** bは結果10の21乗を出力する。
//除算して、余りを切り捨てて最も近い整数を取る。9//2
4
-9//2
-5

次の例では、Pythonでのすべての算術演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 

a = 21 
b = 10 
c = 0 

c = a + b 
print ("1 - c の値は", c) 

c = a - b 
print ("2 - c の値は", c) 

c = a * b 
print ("3 - c の値は", c) 

c = a / b 
print ("4 - c の値は", c) 

c = a % b 
print ("5 - c の値は", c) 

# 変数a、b、cを変更する
a = 2 
b = 3 
c = a**b 
print ("6 - c の値は", c) 

a = 10 
b = 5 
c = a//b 
print ("7 - c の値は", c)

上記の例の出力結果は以下になります。

1-cの値:31
2-cの値:11
3-cの値:210
4-cの値:2.1
5-cの値:1
6-cの値:8
7-cの値:2

Python比較演算子

以下は、変数aが10で、変数bが20であると想定します。

演算子説明実例
==等号 – オブジェクトが等しいかどうかを比較する。(a == b)はFalseを返す。
!=不等号 – 2つのオブジェクトが等しくないかどうかを比較する。(a!= b)Trueを返す。
>大なり記号 – xがyより大きいかどうかを返す。(a> b)はFalseを返す。
<小なり記号 – xがyより小さいかどうかを返す。 すべての比較演算子は、trueの場合は1を返し、falseの場合は0を返す。 これは、それぞれ特殊変数TrueおよびFalseと同等です。 これらの変数名の大文字に注意してください。(a <b)Trueを返す。
>=大なりイコール記号 – xが大なりイコールyかどうかを返す。 (a> = b)はFalseを返す。
<=小なりイコール記号 – xが小なりイコールyかどうかを返す。(a <= b)はTrueを返す。

次の例では、Pythonでのすべての比較演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 

a = 21 
b = 10 
c = 0 

if ( a == b ): 
    print ("1 - a イコール b") 
else: 
    print ("1 - a ノットイコール b") 

if ( a != b ): 
    print ("2 - a ノットイコール b") 
else: 
    print ("2 - a イコール b") 

if ( a < b ): 
    print ("3 - a 小なり b") 
else: 
    print ("3 - a 大なりイコール b") 

if ( a > b ):
    print ("4 - a 大なり b") 
else: 
    print ("4 - a 小なりイコール b") 

# 変数aとbの値を変更する。
a = 5 
b = 20 
if ( a <= b ):
    print ("5 - a 小なりイコール b") 
else: 
    print ("5 - a 大なり b") 

if ( b >= a ):
    print ("6 - b 大なりイコール a") 
else: 
    print ("6 - b 小なり a")

上記の実例の出力結果は以下になります。

1-aはノットイコールb
2-aはノットイコールb
3-aは大なりイコールb
4-aは大なりb
5-aは小なりイコールb
6-bは大なりイコールa

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と同等。
%=モジュラス(Modulus)代入演算子c%= aはc = c%aと同等。
**=べき乗代入演算子c ** = aはc = c ** aと同等。
//=除算余り切り捨て代入演算子c // = aはc = c // aと同等。
:=セイウチ演算子は、式内の変数に値を割り当てることができ、 Python3.8で追加された演算子。この例では、代入式でlen()を2回呼び出すことを回避できる。

if (n := len(a)) > 10:
print(f”List is too long ({n} elements, expected <= 10)”)

次の例では、Pythonでのすべての代入演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 

a = 21 
b = 10 
c = 0 

c = a + b 
print ("1 - c の値は", c) 

c += a 
print ("2 - c の値は", c) 

c *= a 
print ("3 - c の値は", c) 

c /= a 
print ("4 - c の値は", c) 

c = 2 
c %= a 
print ("5 - c の値は", c) 

c **= a 
print ("6 - c の値は", c) 

c //= a 
print ("7 - c の値は", c)

上記の例の出力結果は以下になります。

1-cの値:31
2-cの値:52
3-cの値:1092
4-cの値:52.0
5-cの値:2
6-cの値:2097152
7-cの値:99864

Pythonビット演算子

ビット演算子は、数値を2進数として扱い、計算を実行します。 Pythonのビット演算子のルールは次のとおりです。

次の表では、変数aは60、bは13で、バイナリ形式は次のとおりです。

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
演算子説明実例
&論理積AND演算子。操作に関係する2つの値、対応する2つのビットが両方とも1の場合、ビットの結果は1、それ以外の場合は0。(a&b)出力結果12、バイナリ解釈:0000 1100
|論理和OR演算子。対応する2つのバイナリビットの1つが1である限り、結果のビットは1。(a | b)出力結果61、バイナリ解釈:0011 1101
^排他的論理和XOR演算子。対応する2つのバイナリビットが異なる場合、結果は1になる。(a ^ b)出力結果49、バイナリ解釈:0011 0001
~反転NOT演算子。データの各バイナリビットを反転する。つまり、1を0に、0を1に変更する。 〜xは-x-1に類似する。(〜a)出力結果-61、バイナリ解釈:1100 0011、符号付き2進数の補数形式。
<<左シフト演算子。被演算子のすべてのバイナリビットは、何ビットを左に移動される。「<<」の右側の数値は、移動するビット数を指定し、上位ビットは切り捨て、下位ビットは。0で埋められる。a << 2出力結果240、バイナリ解釈:1111 0000
>>右シフト演算子:「>>」の左側にある被演算子のすべてのバイナリビットは何ビットを右に移動し、「>>」の右側の数字は移動するビット数を指定する。a >> 2出力結果15、バイナリ解釈:0000 1111

次の例では、Pythonでのすべてのビット演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 

a = 60 # 60 = 0011 1100 
b = 13 # 13 = 0000 1101 
c = 0 

c = a & b # 12 = 0000 1100 
print ("1 - c の値は", c) 

c = a | b # 61 = 0011 1101 
print ("2 - c の値は", c) 

c = a ^ b # 49 = 0011 0001 
print ("3 - c の値は", c) 

c = ~a # -61 = 1100 0011 
print ("4 - c の値は", c) 

c = a << 2 # 240 = 1111 0000 
print ("5 - c の値は", c) 

c = a >> 2 # 15 = 0000 1111 
print ("6 - c の値は", c)

上記の実例の出力結果は以下の通りです。

1-cの値:12
2-cの値:61
3-cの値:49
4-cの値:-61
5-cの値:240
6-cの値:15

Python論理演算子

Pythonは論理演算子をサポートしています。以下では、変数aが10、bが20であると想定します。

演算子論理式説明実例
andx and yブール「and」-xがFalseの場合、xとyはxの値を返し、それ以外の場合はyの値を返す。(a and b)は20を返す。
orx or yブール「or」-xがTrueの場合は、xの値を返し、そうでない場合はyの値を返す。(a or b)は10を返す。
notnot xブール「not」-xがTrueの場合、Falseを返し、 xがFalseの場合、Trueを返す。not(a and b)はFalseを返す

次の実例では、Pythonでのすべての論理演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 

a=10 
b=20 

if (a and b):
    print ("1 - 変数aとbは両方ともtrue ")
else: 
    print ("1 - 変数aとbのうちの1つがtrueではない")

if ( a or b ): 
    print ("2 - 変数aとbは両方ともtrueか、あるいはその中の1つがtrue") 
else: 
    print ("2 - 変数aとbは両方ともtrue ではない") 

# 変数aの値を変更する
a = 0 
if ( a and b ): 
    print ("3 - 変数aとbは両方ともtrue ") 
else: 
    print ("3 - 変数aとbのうちの1つがtrueではない") 

if ( a or b ): 
    print ("4 - 変数aとbは両方ともtrueか、あるいはその中の1つがtrue ") 
else: 
    print ("4 - 変数aとbは両方ともtrue ではない") 

if not( a and b ): 
    print ("5 - 変数aとbは両方ともfalseか、あるいはその中の1つがfalse") 
else: 
    print ("5 - 変数aとbは両方ともtrue ")

上記の実例の出力結果は以下になります。

1-変数aとbは両方ともtrue
2-変数aとbが両方ともtrueか、変数の1つがtrue
3-変数aとbのうちの1つがtrueではない
4-変数aとbの両方ともtrueか、変数の1つがtrue
5-変数aとbが両方ともfalseか、変数の1つがfalse

Pythonメンバー演算子

上記の演算子に加えて、Pythonはメンバー演算子もサポートしています。テストインスタンスには、文字列、リスト、タプルなどの一連のメンバーが含まれています。

演算子説明実例
in指定された列では値が見つかった場合はTrueを返し、そうでない場合はFalseを返す。xがy列内にある。xがy列内にある場合はTrueを返す。
not in指定された列に値が見つからない場合はTrueを返し、それ以外の場合はFalseを返す。xがy列内にない。xがy列内にない場合はTrueを返す。

次の実例では、Pythonでのすべてのメンバー演算子の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3

a = 10 
b = 20 
list = [1, 2, 3, 4, 5 ] 

if ( a in list ): 
    print ("1 – 変数aは指定されているリストにある") 
else: 
    print ("1 - 変数aは指定されているリストにない") 

if ( b not in list ): 
    print ("2 - 変数bは指定されているリストにない") 
else: 
    print ("2 - 変数bは指定されているリストにある") 

# 変数aの値を変更する 
a = 2 
if ( a in list ): 
    print ("3 - 変数aは指定されているリストにある") 
else: 
    print ("3 - 変数aは指定されているリストにない")

上記の実例の出力結果は以下になります。

1-変数aが指定されたリストにない
2-変数bが指定されたリストにない
3-変数aは指定されたリストにない

Pythonアイデンティティ演算子

アイデンティティ演算子は記憶ユニットの2つのオブジェクトを比較するために使用されます。

演算子説明実例
isis は2つの識別子がオブジェクトを参照しているかどうかを判断される。x is yはid(x)== id(y)と類似する。同じオブジェクトを参照している場合はTrueを返し、そうでない場合はFalseを返す
is notis notは2つの識別子が異なるオブジェクトを参照しているかどうかを判断される。x is not yはid(a)!= id(b)と類似する。 参照が同じオブジェクトでない場合、結果はTrueを返し、そうでない場合はFalseを返す。

注:アイデンティティ演算子は、オブジェクトのメモリアドレスを取得するために使用されます。

次の実例では、Pythonでのすべてのアイデンティティ演算子の操作を示しています。

実例(Python 3.0以降

#!/usr/bin/python3 

a = 20 
b = 20 

if ( a is b ): 
    print ("1 - aとbは同じロゴがある") 
else: 
    print ("1 - aとbは同じロゴがない") 

if ( id(a) == id(b) ): 
    print ("2 - a 和 b aとbは同じロゴがある") 
else: 
    print ("2 - aとbは同じロゴがない") 
b = 30 
if ( a is b ): 
    print ("3 - aとbは同じロゴがある") 
else: 
    print ("3 - aとbは同じロゴがない") 

if ( a is not b ): 
    print ("4 - aとbは同じロゴがない") 
else: 
    print ("4 - aとbは同じロゴがある")

上記の実例の出力結果は以下になります。

1-aとbは同じロゴがある
2-aとbは同じロゴがある
3-aとbは同じロゴがない
4-aとbは同じロゴがない

isと==の違い

isは、2つの変数参照オブジェクトが同じであるかどうかを判別するために使用され、==は、参照変数の値が等しいかどうかを判別するために使用されます。

>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True

Python演算子優先順位

次の表に、優先順位の高いものから低いものへのすべての演算子を示しています。

演算子説明
**べき乗(最高の優先順位)
~ + –ビット単位の反転、単項のプラスとマイナス(最後の2つのメソッドの名前は+ @と-@)
/ % //掛け算、割り算、余りを求める、余りを切り捨て整数を取る
+-足し算と引き算
>><<右シフト、左シフト演算子
&ビット「AND」
^ |ビット演算子
<= < > >=比較演算子
== !=等号演算子
= %= /= //= -= += *= **=代入演算子
is is notアイデンティティ演算子
in not inメンバー演算子
not and or論理演算子

次の実例では、Pythonでのすべての演算子の優先順位の操作を示しています。

実例(Python 3.0以降)

#!/usr/bin/python3 
a = 20 
b = 10 
c = 15 
d = 5 
e = 0 

e = (a + b) * c / d  #( 30 * 15 ) / 5 
print ("(a + b) * c / d 計算結果は", e) 

e = ((a + b) * c) / d # (30 * 15 ) / 5 
print ("((a + b) * c) / d 計算結果は", e) 

e = (a + b) * (c / d) # (30) * (15/5) 
print ("(a + b) * (c / d) 計算結果は", e) 

e = a + (b * c) / d # 20 + (150/5) 
print ("a + (b * c) / d 計算結果は", e)

上記の実例の出力結果は以下になります。

(a + b)* c / d演算の結果:90.0
((a + b)* c)/ d演算の結果:90.0
(a + b)*(c / d)演算の結果:90.0
a +(b * c)/ d演算の結果:50.0
and 拥有更高优先级:
and 優先度が高いです。

実例

x = True y = False z = False if x or y and z: print("yes") else: print("no")

上記の例の出力:

yes

注意点

Pyhton3は<>演算子をサポートしなくなりました。代わりに!=を使用できます。比較演算子を使用する必要がある場合は、次の方法を使用してください。

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です