Python基本文法_演算子の詳細
目次ディレクトリ 前言 ソフトウェア環境 アイデンティティー演算子 算術演算子 比較演算子 シフト演算子 自己変数演算子 ビット演算子 論理演算子 メンバー関係演算子 Python真値表 最後の 前言
前のブログでPythonのデータ構造を紹介した後、Pythonオペレータと組み合わせてPythonプログラムのデータを処理します.オペレータ/演算子の使用は、組み込みタイプのオブジェクト処理を簡潔に表すことができます.主にプログラム中のデータに対して論理操作、算術操作、比較操作などの動作行為を行い、本質はプログラムの中で非常によく使われるプログラム操作をクラスや関数にカプセル化した後、文字の形式で呼び出し、プログラム言語をより簡潔にし、国際化に合致させることである.
ソフトウェア環境オペレーティングシステム UbuntuKylin 14.04
ソフトウェア Python 2.7.6 IPython 4.0.0
アイデンティティー演算子
アイデンティティ演算子は、2つの変数の参照オブジェクトが同じメモリオブジェクト、すなわちid(varibale 1)を指しているかどうかを判断するために使用されます.=id(variable2). is:2つの識別子が1つのオブジェクトから参照されているかどうかを判断するis not:2つの識別子が異なるオブジェクトから参照されているかどうかを判断するには、isと==の意味が異なることに注意してください.
要約すると,isは2つの変数が同じオブジェクトを参照するか否かを判断し,==は2つの変数が参照するオブジェクトの値が一致するか否かを判断する.両者の違いをよく理解するにはPythonオブジェクトの3つの要素から話す必要があります.Pythonオブジェクトの3要素:id、type、value id:オブジェクトの一意の識別であり、メモリ内のオブジェクトの記憶アドレスである.type:オブジェクトのデータ型valueです.オブジェクトの値で、オブジェクトがメモリに格納されているデータです.ここでisの判断根拠はオブジェクトのidであり、==の判断根拠はオブジェクトvalueであり、例えば:
上記の例では、name 2はname 1がcopy()関数を呼び出して返される新しいオブジェクトであるため、両者のid()は等しくなく、2つの変数のメモリ和のvaleは等しい.
算術演算子
Operator
Description
+\-
プラス/マイナス、ここで'+'はコネクタとして再ロードでき、2文字または文字列を接続できます.
*\**
*を繰り返しに再ロードできます.
/\%\//
%はフォーマットに再ロードできます.
**注:**Pythonの除算に注意すべき点(Python 2.xバージョン、3.xバージョンでは問題ありません)1.Pythonではint型の数値を除いて、int型が小数を返さないことしか得られません.戻り値を小数点以下に正確にするには、2つの方法があります.方法1:除数または被除数にはfloat型の数値が必要である.
方法2:importが将来サポートする言語フィーチャーdivision(正確な除算)Pythonの'/'除算はデフォルトで遮断除算(Truncating Division)を使用し、divisionモジュールをインポートするとPythonはデフォルトで正確な除算を使用します.精確除を導入した後、切断除を再使用するには、取整除'//'を使用し、床除としても使用できます.
2つの組み込み関数round(number[,ndigits])、divmod(x,y)round(x[,n]):浮動小数点数xを1つ与え、指定精度に従って浮動小数点数オブジェクトを返します.公式ドキュメントは次のとおりです.
例:
この方法で指定した精度の浮動小数点数を取得するほか、%フォーマットを使用して指定した精度の浮動小数点数を出力することもできます.
%フォーマットは、ニーズを満たす出力データのフォーマットを非常に柔軟に得ることができ、後で理解します.divmod(x,y):x,yの整数と余剰数を計算し、メタグループタイプで返します.公式ドキュメント:
例:
比較演算子
Operator
Description
>
より大きい
<
より小さい
>=
以上
<=
以下
==
等しい、2つのオブジェクトのvalueが等しいかどうかを比較し、Trueに等しい
!=
等しくない、2つのオブジェクトを比較するvalueが等しくないかどうか、等しくないかどうかはTrue
<>
等しくない、同じ!=演算子
シフト演算子
シフト演算子は非常に効率的な計算方法の一つであり,数学的演算やプログラムの実行効率が要求されるプログラムでは推奨される.シフト演算子に加えて、Pythonのビット別演算子も非常に効率的なデータ処理方法であり、後で詳しく説明します.
Operator
Description
<<
a << n ⇒ a*(2**n)
>>
a >> n ⇒ a/(2**n)
じこへんかんえんざんし
自己変化演算子は一定のコード量を減らすことができ、さらに重要なのは、自己変化演算子を使用することでPythonプログラムのメモリでの実行効率を速めることができる.Pythonは文法の曖昧さを避けるため、Python文法にはi++または++iを自増する文法はなく、++iは数学演算オペレータにのみ作用します.
Operator
Description
+=
a+=b ⇒ a=a+b
-=
a-=b ⇒ a=a-b
*=
a*=b ⇒ a=a*b
/=
a/=b ⇒ a=a/b
%=
a%=b ⇒ a=a%b
**=
a**=b ⇒ a=a**b
//=
a//=b ⇒ a=a//b
ちなみにi=i+1,i+=1,i++3の実行効率の高低を比較する(一般プログラミング言語について).最低i=i+1(1).右iのアドレス(2)を読み出す.i+1 (3). 左iのアドレス(4)を読み出す.右i+1を左iに渡すと,コンパイラは左右の2つのiが一致しないと考える.次にi+=1(1)である.左iのアドレス(2)を読み出す.i+1 (3). i+1をi自身に渡すと、コンパイラは同じiの最高i++(1)しかないと考える.iのアドレス(2)を読み出す.自増1注意:プログラムの実行効率を向上させることを考慮するとともに、i+=1を使用する場合に文法エラーがわけがわからず発生することにも注意してください.この場合、データ型の暗黙的な変換エラーであるかどうかを考慮することができます.以上の比較は一般的なプログラミング言語に対してのみ,Pythonには可変オブジェクトと非可変オブジェクトが存在し,i++自己増加言語は存在しない.しかし、自己変化演算子を使用すると、コード量を効果的に減らし、プログラムをより簡潔にすることができます.
ビット演算子
Operator
Description
x | y
ビット単位または(1則1あり)
x & y
ビットと(0があれば0)
x ^ y
ビット排他的論理和(異なる場合は1、同じ場合は0)
~x
に逆らう
Pythonでは|、&などの演算子の意味は論理関係を処理することではなく、バイナリデータのビット演算であり、数字はバイナリ形式の補符号記憶と計算であり、元の符号結果で表示される.数字が正の値であれば、彼の補コードは元のコードそのものです.数字が負の値であれば、彼の補コードはソースコードのために何度もビットを押して逆を取ります.2つの数字の計算の本質は2つのバイナリ符号の計算である.デジタル計算の実現原理:1の原コード:0000 0001、補コード:0000 0001(バイナリの最初のデジタル代表記号、変更不可)-1の原コード:1000 0001、補コード:1111 1111
すなわち、1111 1111 0000 0001—————0000 0001その結果、原符号は0000 0001(正数の補符号は原符号そのもの)となる
すなわち、1111 1111 0000 0001—————1111 1111は、その結果、1,000,000,000(負数の原数は、符号を補完するために何度もビットを減算して反転し、最初の数字は符号を表すことができない)であるため、デジタル計算の下位実装から見ることができる.シフト演算子は計算効率が非常に高い計算方法であり、特に乗算を実行する場合と同様に、非常に複雑な操作と実現プロセスを回避することができる.
論理演算子
Operator
Description
and
ロジックと
or
論理または
not
ろんりひ
Pythonではand,or,notの3つの演算子のみを論理演算として用いることができ,C,Javaなどのプログラミング言語では&,|,!,さらに、&&、単純論理、または||などの論理演算子に単純論理を使用することはできません.このように、Pythonは常に「最良の方法で問題を解決する」という設計理念を堅持している.
メンバー関係演算子
メンバー演算子は、指定されたオブジェクトがコンテナ内の要素であるかどうかを判断し、2つのオブジェクト間の関係を判断します.≪コンテナ|Container|ldap≫:他のオブジェクトの参照を含むデータ型.
Operator
Description
in
オブジェクトがコンテナに存在する場合はTure
not in
オブジェクトがコンテナにない場合はTrue
Python真値表
Object
Constant Value
“”
False
“Str”
True
0
False
1
True
()空のタプル
False
[]空のリスト
False
空の辞書
False
None
False
最後に
演算子はプログラムの中でずっと非常に重要な役割を果たしており、プログラミングの過程で完全に使用されない可能性がありますが、自分で作成した演算子ドキュメントを作成することは、今後のプログラムの作成に非常に便利になります.
Jmilk
前のブログでPythonのデータ構造を紹介した後、Pythonオペレータと組み合わせてPythonプログラムのデータを処理します.オペレータ/演算子の使用は、組み込みタイプのオブジェクト処理を簡潔に表すことができます.主にプログラム中のデータに対して論理操作、算術操作、比較操作などの動作行為を行い、本質はプログラムの中で非常によく使われるプログラム操作をクラスや関数にカプセル化した後、文字の形式で呼び出し、プログラム言語をより簡潔にし、国際化に合致させることである.
ソフトウェア環境
アイデンティティー演算子
アイデンティティ演算子は、2つの変数の参照オブジェクトが同じメモリオブジェクト、すなわちid(varibale 1)を指しているかどうかを判断するために使用されます.=id(variable2). is:2つの識別子が1つのオブジェクトから参照されているかどうかを判断するis not:2つの識別子が異なるオブジェクトから参照されているかどうかを判断するには、isと==の意味が異なることに注意してください.
In [11]: [] == []
Out[11]: True
In [12]: [] is []
Out[12]: False
要約すると,isは2つの変数が同じオブジェクトを参照するか否かを判断し,==は2つの変数が参照するオブジェクトの値が一致するか否かを判断する.両者の違いをよく理解するにはPythonオブジェクトの3つの要素から話す必要があります.Pythonオブジェクトの3要素:id、type、value id:オブジェクトの一意の識別であり、メモリ内のオブジェクトの記憶アドレスである.type:オブジェクトのデータ型valueです.オブジェクトの値で、オブジェクトがメモリに格納されているデータです.ここでisの判断根拠はオブジェクトのidであり、==の判断根拠はオブジェクトvalueであり、例えば:
In [25]: name1 = {'fan':'jmilk'}
In [26]: name2 = name1.copy()
In [27]: name1 == name2
Out[27]: True
In [28]: name1 is name2
Out[28]: False
In [29]: id(name1),id(name2)
Out[29]: (140197805793640, 140197805796720)
上記の例では、name 2はname 1がcopy()関数を呼び出して返される新しいオブジェクトであるため、両者のid()は等しくなく、2つの変数のメモリ和のvaleは等しい.
算術演算子
Operator
Description
+\-
プラス/マイナス、ここで'+'はコネクタとして再ロードでき、2文字または文字列を接続できます.
*\**
*を繰り返しに再ロードできます.
/\%\//
%はフォーマットに再ロードできます.
**注:**Pythonの除算に注意すべき点(Python 2.xバージョン、3.xバージョンでは問題ありません)1.Pythonではint型の数値を除いて、int型が小数を返さないことしか得られません.戻り値を小数点以下に正確にするには、2つの方法があります.方法1:除数または被除数にはfloat型の数値が必要である.
In [75]: float(1)/2
Out[75]: 0.5
方法2:importが将来サポートする言語フィーチャーdivision(正確な除算)Pythonの'/'除算はデフォルトで遮断除算(Truncating Division)を使用し、divisionモジュールをインポートするとPythonはデフォルトで正確な除算を使用します.精確除を導入した後、切断除を再使用するには、取整除'//'を使用し、床除としても使用できます.
In [92]: %%file testFloat.py
from __future__ import division
a = 1
b = 2
print a/b
....: print a//b
....:
Overwriting testFloat.py
In [93]: run testFloat.py
0.5
0
2つの組み込み関数round(number[,ndigits])、divmod(x,y)round(x[,n]):浮動小数点数xを1つ与え、指定精度に従って浮動小数点数オブジェクトを返します.公式ドキュメントは次のとおりです.
In [109]: round.__doc__
Out[109]: 'round(number[, ndigits]) -> floating point number
Round a number to a given precision in decimal digits (default 0 digits).
This always returns a floating point number. Precision may be negative.'
例:
In [124]: round(1.11111111111,5)
Out[124]: 1.11111
この方法で指定した精度の浮動小数点数を取得するほか、%フォーマットを使用して指定した精度の浮動小数点数を出力することもできます.
In [125]: a = 1.1111111111
In [126]: print '%.5f' %a
1.11111
%フォーマットは、ニーズを満たす出力データのフォーマットを非常に柔軟に得ることができ、後で理解します.divmod(x,y):x,yの整数と余剰数を計算し、メタグループタイプで返します.公式ドキュメント:
In [131]: divmod.__doc__
Out[131]: 'divmod(x, y) -> (quotient, remainder)
Return the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x.'
例:
In [133]: divmod(7,5)
Out[133]: (1, 2)
比較演算子
Operator
Description
>
より大きい
<
より小さい
>=
以上
<=
以下
==
等しい、2つのオブジェクトのvalueが等しいかどうかを比較し、Trueに等しい
!=
等しくない、2つのオブジェクトを比較するvalueが等しくないかどうか、等しくないかどうかはTrue
<>
等しくない、同じ!=演算子
シフト演算子
シフト演算子は非常に効率的な計算方法の一つであり,数学的演算やプログラムの実行効率が要求されるプログラムでは推奨される.シフト演算子に加えて、Pythonのビット別演算子も非常に効率的なデータ処理方法であり、後で詳しく説明します.
Operator
Description
<<
a << n ⇒ a*(2**n)
>>
a >> n ⇒ a/(2**n)
じこへんかんえんざんし
自己変化演算子は一定のコード量を減らすことができ、さらに重要なのは、自己変化演算子を使用することでPythonプログラムのメモリでの実行効率を速めることができる.Pythonは文法の曖昧さを避けるため、Python文法にはi++または++iを自増する文法はなく、++iは数学演算オペレータにのみ作用します.
In [18]: i = 1
In [19]: ++i
Out[19]: 1
In [20]: +-i
Out[20]: -1
In [21]: --i
Out[21]: 1
Operator
Description
+=
a+=b ⇒ a=a+b
-=
a-=b ⇒ a=a-b
*=
a*=b ⇒ a=a*b
/=
a/=b ⇒ a=a/b
%=
a%=b ⇒ a=a%b
**=
a**=b ⇒ a=a**b
//=
a//=b ⇒ a=a//b
ちなみにi=i+1,i+=1,i++3の実行効率の高低を比較する(一般プログラミング言語について).最低i=i+1(1).右iのアドレス(2)を読み出す.i+1 (3). 左iのアドレス(4)を読み出す.右i+1を左iに渡すと,コンパイラは左右の2つのiが一致しないと考える.次にi+=1(1)である.左iのアドレス(2)を読み出す.i+1 (3). i+1をi自身に渡すと、コンパイラは同じiの最高i++(1)しかないと考える.iのアドレス(2)を読み出す.自増1注意:プログラムの実行効率を向上させることを考慮するとともに、i+=1を使用する場合に文法エラーがわけがわからず発生することにも注意してください.この場合、データ型の暗黙的な変換エラーであるかどうかを考慮することができます.以上の比較は一般的なプログラミング言語に対してのみ,Pythonには可変オブジェクトと非可変オブジェクトが存在し,i++自己増加言語は存在しない.しかし、自己変化演算子を使用すると、コード量を効果的に減らし、プログラムをより簡潔にすることができます.
ビット演算子
Operator
Description
x | y
ビット単位または(1則1あり)
x & y
ビットと(0があれば0)
x ^ y
ビット排他的論理和(異なる場合は1、同じ場合は0)
~x
に逆らう
Pythonでは|、&などの演算子の意味は論理関係を処理することではなく、バイナリデータのビット演算であり、数字はバイナリ形式の補符号記憶と計算であり、元の符号結果で表示される.数字が正の値であれば、彼の補コードは元のコードそのものです.数字が負の値であれば、彼の補コードはソースコードのために何度もビットを押して逆を取ります.2つの数字の計算の本質は2つのバイナリ符号の計算である.デジタル計算の実現原理:1の原コード:0000 0001、補コード:0000 0001(バイナリの最初のデジタル代表記号、変更不可)-1の原コード:1000 0001、補コード:1111 1111
In [67]: -1 & 1
Out[67]: 1
すなわち、1111 1111 0000 0001—————0000 0001その結果、原符号は0000 0001(正数の補符号は原符号そのもの)となる
In [68]: -1 | 1
Out[68]: -1
すなわち、1111 1111 0000 0001—————1111 1111は、その結果、1,000,000,000(負数の原数は、符号を補完するために何度もビットを減算して反転し、最初の数字は符号を表すことができない)であるため、デジタル計算の下位実装から見ることができる.シフト演算子は計算効率が非常に高い計算方法であり、特に乗算を実行する場合と同様に、非常に複雑な操作と実現プロセスを回避することができる.
論理演算子
Operator
Description
and
ロジックと
or
論理または
not
ろんりひ
Pythonではand,or,notの3つの演算子のみを論理演算として用いることができ,C,Javaなどのプログラミング言語では&,|,!,さらに、&&、単純論理、または||などの論理演算子に単純論理を使用することはできません.このように、Pythonは常に「最良の方法で問題を解決する」という設計理念を堅持している.
メンバー関係演算子
メンバー演算子は、指定されたオブジェクトがコンテナ内の要素であるかどうかを判断し、2つのオブジェクト間の関係を判断します.≪コンテナ|Container|ldap≫:他のオブジェクトの参照を含むデータ型.
Operator
Description
in
オブジェクトがコンテナに存在する場合はTure
not in
オブジェクトがコンテナにない場合はTrue
In [72]: 1 in list
Out[72]: True
In [73]: 4 in list
Out[73]: False
In [74]: 4 not in list
Out[74]: True
In [75]: 1 not in list
Out[75]: False
Python真値表
Object
Constant Value
“”
False
“Str”
True
0
False
1
True
()空のタプル
False
[]空のリスト
False
空の辞書
False
None
False
最後に
演算子はプログラムの中でずっと非常に重要な役割を果たしており、プログラミングの過程で完全に使用されない可能性がありますが、自分で作成した演算子ドキュメントを作成することは、今後のプログラムの作成に非常に便利になります.
Jmilk