いまさら始めるPython3(3)-数値と演算子の扱い
はじめに
ここでは、Pythonでの数値と演算子の扱いを紹介します。
数値を使用する目的は、主に数値の演算に使うため、合わせて演算子についても紹介しています。ただし、演算子については、最初から全て知っておかなくても、後から必要に応じて覚えればよいので、参考までに。
しかしながら、Pythonを使ってデータ分析や機械学習などを行う場合、数値や演算子をよく知っておく必要があります。
数値の型
Pythonの数値の型は、次のものがあります。
| 型 | 例 |
|---|---|
| 整数 | 123, -45, 12345678901234567890 |
| 浮動小数点数 | 1.23, 1.23e4, 1.23e-4 |
| 複素数 | 1+2j, 1.2+3.4j |
整数は、短整数と長整数がありますが、短整数が演算していくなかでオーバーフローする場合は長整数に置き換えられるため、短整数、長整数を意識する必要はほぼありません。
また、メモリ上の制限を除けば、事実上、無限の桁数が使えるらしいです。(本当かどうか試したことがありませんが)
浮動小数点数は、通常の小数の表記とeを使った10の累乗の表記ができます。
複素数は、実数部+虚数部の形で表記し、虚数部の最後に「j」を付与します。
以下のようにインタープリター上で値を入力してみると、どのような数値かわかります。
| >>> 123123>>> -45-45>>> 1234567890123456789012345678901234567890>>> 1.231.23>>> 1.23e412300.0>>> 1.23e-40.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
上記を試しにインタープリター上で入力すると次のようになります。(整数として出力されます)
| >>> 0b10101143>>> 0o1234567342391>>> 0x1234567890abcdef1311768467294899695 |
|---|
数値の演算子
数値を演算することを示す演算子には次のものがあります。
| 演算 | 演算子 | 表記 | 例 | 演算結果(補足) |
|---|---|---|---|---|
| 加算 | + | x+y | 1+2 | =3 |
| 減算 | - | x-y | 4-1 | =3 |
| 乗算 | * | x*y | 2*3 | =6 |
| 除算 | /// | x/yx//y | 5/25//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 22 or 10 or 22 or 0 | =1(0以外なら前の数字)=2(0以外なら前の数字)=2(0でない方の数字)=2(0でない方の数字) |
| 論理積 | and | x and y | 1 and 22 and 10 and 22 and 0 | =2(0がなければ後の数字)=1(0がなければ後の数字)=0(いずれか0なら0)=0(いずれか0なら0) |
| 論理否定 | not | not x | not 3not 0 | =False(真≠0の否定は偽)=True(偽=0の否定は真) |
ビット演算子
ビット演算子は、バイナリ値(2進数)の論理演算で使用します。
| 演算 | 演算子 | 表記 | 例 | 演算結果(補足) |
|---|---|---|---|---|
| ビット論理和 | x | y | ||
| ビット論理積 | & | 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の構文について紹介します。