Pythonの演算子


演算子とは?
この章では主にPythonの演算子について説明します.簡単な例として4+5=9を挙げる.例では,4と5をオペランド,「+」は演算子と呼ぶ.
Python言語では、次の演算子がサポートされています.
算術演算子比較演算子代入演算子論理演算子ビット演算子メンバー演算子アイデンティティー演算子演算子優先度次に、Pythonの演算子を一つ一つ学びましょう.
Python演算子
以下に、変数aを10、変数bを20とする.
演算子
説明
≪インスタンス|Instance|emdw≫
+
加算-2つのオブジェクトを加算
a+b出力結果30
-
減算-負の数または1つの数から別の数を減算します.
a-b出力結果-10
*
乗算-2つの数を乗算するか、繰り返した文字列を返します.
a*b出力結果200
/
除算-xをyで割る
b/a出力結果2
%
型取り-除算の余剰を返す
b%a出力結果0
**
べき乗-xのy次べき乗を返します
a**bは10の20次方で、出力結果は1000000000000億円
//
「除算」-返品元の整数部
9//2出力結果4,9.0//2.0出力結果4.0
次の例では、Pythonのすべての演算子の操作を示します.
#!/usr/bin/python

a = 21
b = 10
c = 0

c = a + b
print "Line 1 - Value of c is ", c

c = a - b
print "Line 2 - Value of c is ", c 

c = a * b
print "Line 3 - Value of c is ", c 

c = a / b
print "Line 4 - Value of c is ", c 

c = a % b
print "Line 5 - Value of c is ", c

a = 2
b = 3
c = a**b 
print "Line 6 - Value of c is ", c

a = 10
b = 5
c = a//b 
print "Line 7 - Value of c is ", c

上記の例は、結果を出力します.
Line 1 - Value of c is 31
Line 2 - Value of c is 11
Line 3 - Value of c is 210
Line 4 - Value of c is 2
Line 5 - Value of c is 1
Line 6 - Value of c is 8
Line 7 - Value of c is 2

Python比較演算子
以下に、変数aを10、変数bを20とする.
演算子
説明
≪インスタンス|Instance|emdw≫
==
「等しい」-オブジェクトが等しいかどうかを比較します.
(a==b)Falseを返します.
!=
等しくない-2つのオブジェクトが等しくないかどうかを比較します.
(a!=b)trueを返します.
<>
等しくない-2つのオブジェクトが等しくないかどうかを比較します.
(a<>b)はtrueを返します.この演算子は似ています!=です.
>
より大きい-xがyより大きいかどうかを返します
(a>b)Falseを返します.
<
より小さい-xがyより小さいかどうかを返します.すべての比較演算子は、1が真、0が偽を返します.これはそれぞれ特殊な変数TrueとFalseと等価である.これらの変数名の大文字に注意してください.
(a>=
以上:xがy以上であるかどうかを返します.
(a>=b)Falseを返します.
<=
以下:xがy以下であるかどうかを返します.
(a<=b)はtrueを返します.
次の例では、Pythonのすべての比較演算子の操作を示します.
#!/usr/bin/python

a = 21
b = 10
c = 0

if ( a == b ):
   print "Line 1 - a is equal to b"
else:
   print "Line 1 - a is not equal to b"

if ( a != b ):
   print "Line 2 - a is not equal to b"
else:
   print "Line 2 - a is equal to b"

if ( a <> b ):
   print "Line 3 - a is not equal to b"
else:
   print "Line 3 - a is equal to b"

if ( a  b ):
   print "Line 5 - a is greater than b"
else:
   print "Line 5 - a is not greater than b"

a = 5;
b = 20;
if ( a <= b ):
   print "Line 6 - a is either less than or equal to  b"
else:
   print "Line 6 - a is neither less than nor equal to  b"

if ( b >= a ):
   print "Line 7 - b is either greater than  or equal to b"
else:
   print "Line 7 - b is neither greater than  nor equal to b"

上記の例は、結果を出力します.
Line 1 - a is not equal to b
Line 2 - a is not equal to b
Line 3 - a is not equal to b
Line 4 - a is not less than b
Line 5 - a is greater than b
Line 6 - a is either less than or equal to b
Line 7 - b is either greater than or equal to b

Python割付演算子
以下に、変数aを10、変数bを20とする.
演算子
説明
≪インスタンス|Instance|emdw≫
=
単純な代入演算子
c=a+b 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に等しい
%=
型取り割付演算子
c%=aはc=c%aに等しい
**=
べき乗割付演算子
c**=aはc=c**aに等しい
//=
整数割付演算子
c//=aはc=c//aに等しい
次の例では、Pythonのすべての付与演算子の操作を示します.
#!/usr/bin/python

a = 21
b = 10
c = 0

c = a + b
print "Line 1 - Value of c is ", c

c += a
print "Line 2 - Value of c is ", c 

c *= a
print "Line 3 - Value of c is ", c 

c /= a 
print "Line 4 - Value of c is ", c 

c  = 2
c %= a
print "Line 5 - Value of c is ", c

c **= a
print "Line 6 - Value of c is ", c

c //= a
print "Line 7 - Value of c is ", c

上記の例は、結果を出力します.
Line 1 - Value of c is 31
Line 2 - Value of c is 52
Line 3 - Value of c is 1092
Line 4 - Value of c is 52
Line 5 - Value of c is 2
Line 6 - Value of c is 2097152
Line 7 - Value of c is 99864

Pythonビット演算子
ビット演算子は、数字をバイナリとして計算します.Pythonの按位演算の法則は以下の通りである.
演算子
説明
≪インスタンス|Instance|emdw≫
&
ビットと演算子
(a&b)出力結果12,バイナリ解釈:0000 1100
|
ビット単位または演算子
(a|b)出力結果61,バイナリ解釈:0011 1101
^
ビット別排他演算子
(a^b)出力結果49,バイナリ解釈:0011 0001
~
ビット単位逆演算子
(~a)出力結果−61,バイナリ解釈:1100,001,シンボルバイナリ数の符号化形式である.
<<
左移動演算子
a<<2出力結果240、バイナリ解釈:1111 0000
>>
右移動演算子
a>>2出力結果15,バイナリ解釈:0000 1111
次の例では、Pythonのすべてのビット演算子の操作を示します.
#!/usr/bin/python

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

c = a & b;        # 12 = 0000 1100
print "Line 1 - Value of c is ", c

c = a | b;        # 61 = 0011 1101 
print "Line 2 - Value of c is ", c

c = a ^ b;        # 49 = 0011 0001
print "Line 3 - Value of c is ", c

c = ~a;           # -61 = 1100 0011
print "Line 4 - Value of c is ", c

c = a <> 2;       # 15 = 0000 1111
print "Line 6 - Value of c is ", c

上記の例は、結果を出力します.
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15

Python論理演算子
Python言語は論理演算子をサポートし、以下は変数aが10、変数bが20であると仮定する.
演算子
説明
≪インスタンス|Instance|emdw≫
and
ブールAND-xがFalseの場合、x and yはFalseを返します.そうでない場合、yの計算値を返します.
(a and b)trueを返します.
or
ブールOR-xがTrueの場合はTrueを返し、そうでない場合はyの計算値を返します.
(a or b)はtrueを返します.
not
ブール「非」-xがTrueの場合はFalseを返します.xがFalseの場合、Trueが返されます.
not(a and b)はfalseを返します.
次の例では、Pythonのすべての論理演算子の操作を示します.
#!/usr/bin/python

a = 10
b = 20
c = 0

if ( a and b ):
   print "Line 1 - a and b are true"
else:
   print "Line 1 - Either a is not true or b is not true"

if ( a or b ):
   print "Line 2 - Either a is true or b is true or both are true"
else:
   print "Line 2 - Neither a is true nor b is true"


a = 0
if ( a and b ):
   print "Line 3 - a and b are true"
else:
   print "Line 3 - Either a is not true or b is not true"

if ( a or b ):
   print "Line 4 - Either a is true or b is true or both are true"
else:
   print "Line 4 - Neither a is true nor b is true"

if not( a and b ):
   print "Line 5 - Either a is not true or b is  not true or both are not true"
else:
   print "Line 5 - a and b are true"

上記の例は、結果を出力します.
Line 1 - a and b are true
Line 2 - Either a is true or b is true or both are true
Line 3 - Either a is not true or b is not true
Line 4 - Either a is true or b is true or both are true
Line 5 - Either a is not true or b is  not true or both are not true

Pythonメンバー演算子
以上の演算子に加えて、Pythonはメンバー演算子をサポートし、テストインスタンスには文字列、リスト、メタグループなどの一連のメンバーが含まれています.
演算子
説明
≪インスタンス|Instance|emdw≫
in
指定したシーケンスで値が見つかった場合はTrueを返します.そうでない場合はFalseを返します.
xはyシーケンスで、xがyシーケンスでTrueを返す場合.
not in
指定したシーケンスに値が見つからない場合はTrueを返します.そうでない場合はFalseを返します.
xはyシーケンスにありません.xがyシーケンスにTrueを返さない場合.
次の例では、Pythonのすべてのメンバー演算子の操作を示します.
#!/usr/bin/python

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

if ( a in list ):
   print "Line 1 - a is available in the given list"
else:
   print "Line 1 - a is not available in the given list"

if ( b not in list ):
   print "Line 2 - b is not available in the given list"
else:
   print "Line 2 - b is available in the given list"

a = 2
if ( a in list ):
   print "Line 3 - a is available in the given list"
else:
   print "Line 3 - a is not available in the given list"

上記の例は、結果を出力します.
Line 1 - a is not available in the given list
Line 2 - b is not available in the given list
Line 3 - a is available in the given list

Pythonアイデンティティー演算子
アイデンティティー演算子2つのオブジェクトを比較するためのメモリセル
演算子
説明
≪インスタンス|Instance|emdw≫
is
isは、2つの識別子が1つのオブジェクトから参照されているかどうかを判断する
x is y,id(x)がid(y)に等しい場合,isは結果1を返す.
is not
is notは、2つの識別子が異なるオブジェクトから参照されているかどうかを判断する
x is not yは、id(x)がid(y)に等しくない場合である.is notは結果1を返す
次の例では、Pythonのすべてのアイデンティティ演算子の操作を示します.
#!/usr/bin/python

a = 20
b = 20

if ( a is b ):
   print "Line 1 - a and b have same identity"
else:
   print "Line 1 - a and b do not have same identity"

if ( id(a) == id(b) ):
   print "Line 2 - a and b have same identity"
else:
   print "Line 2 - a and b do not have same identity"

b = 30
if ( a is b ):
   print "Line 3 - a and b have same identity"
else:
   print "Line 3 - a and b do not have same identity"

if ( a is not b ):
   print "Line 4 - a and b do not have same identity"
else:
   print "Line 4 - a and b have same identity"

上記の例は、結果を出力します.
Line 1 - a and b have same identity
Line 2 - a and b have same identity
Line 3 - a and b do not have same identity
Line 4 - a and b do not have same identity

Python演算子優先度
次の表には、最上位から最下位までのすべての演算子が表示されます.
演算子
説明
**
指数(最優先度)
~ + -
ビットで反転し、1元プラス記号とマイナス記号(最後の2つの方法名は+@と-@)
*/%//
型抜き
+ -
加算減算
>> <<
右シフト、左シフト演算子
&
ビット
^ |
ビット演算子
<= < >>=
比較演算子
<> == !=
イコール演算子
= %=/=//= -= += *= **=
代入演算子
is is not
アイデンティティー演算子
in not in
メンバー演算子
not or and
論理演算子
次の例では、Pythonのすべての演算子の優先度の操作を示します.
#!/usr/bin/python

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d       #( 30 * 15 ) / 5
print "Value of (a + b) * c / d is ",  e

e = ((a + b) * c) / d     # (30 * 15 ) / 5
print "Value of ((a + b) * c) / d is ",  e

e = (a + b) * (c / d);    # (30) * (15/5)
print "Value of (a + b) * (c / d) is ",  e

e = a + (b * c) / d;      #  20 + (150/5)
print "Value of a + (b * c) / d is ",  e

上記の例は、結果を出力します.
Value of (a + b) * c / d is 90
Value of ((a + b) * c) / d is 90
Value of (a + b) * (c / d) is 90
Value of a + (b * c) / d is 50