はじめに
ここでは、Pythonでの数値と演算子の扱いを紹介します。
数値を使用する目的は、主に数値の演算に使うため、合わせて演算子についても紹介しています。ただし、演算子については、最初から全て知っておかなくても、後から必要に応じて覚えればよいので、参考までに。
しかしながら、Pythonを使ってデータ分析や機械学習などを行う場合、数値や演算子をよく知っておく必要があります。
数値の型
Pythonの数値の型は、次のものがあります。
型 | 例 |
---|---|
整数 | 123, -45, 12345678901234567890 |
浮動小数点数 | 1.23, 1.23e4, 1.23e-4 |
複素数 | 1+2j, 1.2+3.4j |
整数は、短整数と長整数がありますが、短整数が演算していくなかでオーバーフローする場合は長整数に置き換えられるため、短整数、長整数を意識する必要はほぼありません。
また、メモリ上の制限を除けば、事実上、無限の桁数が使えるらしいです。(本当かどうか試したことがありませんが)
浮動小数点数は、通常の小数の表記とeを使った10の累乗の表記ができます。
複素数は、実数部+虚数部の形で表記し、虚数部の最後に「j」を付与します。
以下のようにインタープリター上で値を入力してみると、どのような数値かわかります。
>>> 123 123 >>> -45 -45 >>> 12345678901234567890 12345678901234567890 >>> 1.23 1.23 >>> 1.23e4 12300.0 >>> 1.23e-4 0.000123 >>> 1+2j (1+2j) >>> 1.2+3.4j (1.2+3.4j) |
整数の表記(2進数、8進数、16進数)
プログラムを書いていく中で、場合によっては10進数以外に2進数、8進数、16進数のような表記が必要な場合もあります。
これらについては、次のように表記します。
- 2進数 2進数文字列の先頭に「0b」を付与 例:0b101011
- 8進数 8進数文字列の先頭に「0o」を付与 例:0o12345670
- 16進数 16進数文字列の先頭に「0x」を付与 例:0x1234567890abcdef
上記を試しにインタープリター上で入力すると次のようになります。(整数として出力されます)
>>> 0b101011 43 >>> 0o1234567 342391 >>> 0x1234567890abcdef 1311768467294899695 |
数値の演算子
数値を演算することを示す演算子には次のものがあります。
演算 | 演算子 | 表記 | 例 | 演算結果(補足) |
---|---|---|---|---|
加算 | + | x+y | 1+2 | =3 |
減算 | - | x-y | 4-1 | =3 |
乗算 | * | x*y | 2*3 | =6 |
除算 | / // |
x/y x//y |
5/2 5//2 |
=2.5(浮動小数点) =2(整数) |
剰余 | % | x%y | 5%2 | =1 |
累乗 | ** | x**y | 5**2 | =25 |
型変換
数値の型変換は、組み込み関数のint()やfloat()で行うことができます。
>>> int(2.34) 2 >>> float(123) 123.0 |
論理演算子
Pythonでは、論理演算子は、if文の条件のような真/偽で使用します。
演算 | 演算子 | 表記 | 例 | 演算結果(補足) |
---|---|---|---|---|
論理和 | or | x or y | 1 or 2 2 or 1 0 or 2 2 or 0 |
=1(0以外なら前の数字) =2(0以外なら前の数字) =2(0でない方の数字) =2(0でない方の数字) |
論理積 | and | x and y | 1 and 2 2 and 1 0 and 2 2 and 0 |
=2(0がなければ後の数字) =1(0がなければ後の数字) =0(いずれか0なら0) =0(いずれか0なら0) |
論理否定 | not | not x | not 3 not 0 |
=False(真≠0の否定は偽) =True(偽=0の否定は真) |
ビット演算子
ビット演算子は、バイナリ値(2進数)の論理演算で使用します。
演算 | 演算子 | 表記 | 例 | 演算結果(補足) |
---|---|---|---|---|
ビット論理和 | | | x | y | 1|2 | =3(0b01と0b10の論理和) |
ビット論理積 | & | x & y | 10&2 | =2(0b1010と0b0010の論理積) |
ビット排他的論理和 | ^ | x ^ y | 10^2 | =8(0b1010と0b0010の排他的論理和) |
ビット反転 | ~ | ~ x | ~10 | =-11(説明はちょっと難しいので省略) |
左シフト | << | x << y | 10<<2 | =40(0b1010を左に2ビットシフト) |
右シフト | >> | x >> y | 10>>2 | =2(0b1010を右に2ビットシフト) |
いろいろ書きましたが、今回の数字と演算子の話はここまでです。
次回は、Pythonの構文について紹介します。