はじめに

ここでは、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の構文について紹介します。