この記事では、Pythonのデータ型について解説します。Pythonには多くのデータ型が用意されていて、とても便利に扱うことができます。
データは変数に代入して扱います。変数については下記の記事を参照してください。

それでは、Pythonのデータ型について見ていきましょう!
データ型とは?

データ型とは、データの型です。プログラミングでは色々なデータを扱います。そのデータが持つ性質は、型によって定められています。
例えば、整数は「int」という型で表され、文字列は「str」という型で表されます。このように、データの種類によって型を分けることで、そのデータがどのような性質を持ち、どのように取り扱うべきかをそれぞれ定義することができます。
データ型の種類
Pythonでよく使われるデータ型には、以下のようなものがあります。
タイプ | 型名 | 代入方法 |
---|---|---|
文字列 | str | s = ‘Hello’ |
整数 | int | i = 1 |
浮動小数点数 | float | f = 2.71 |
真偽値 | bool | b = True b = False |
リスト | list | l = [1, 2, 3] |
タプル | tuple | t = (1, ‘a’, 2) |
辞書 | dictionary | d = {‘one’: 1, ‘two’: 2} |
セット | set | s = {1, 2, 3} |
データ型の初期化
それぞれの型を初期化して型を確認してみましょう!
Pythonでは、変数に代入したデータから自動的に型を推測してくれます。このような型付け方法を『動的型付け』と呼びます。
※ C言語などでは変数の型を明示的に宣言する必要があります。
type関数を使うことで、オブジェクトの型を確認することが出来ます。
val = 1
print(type(val))
実行結果
<class 'int'>
文字列(str型)
文字列型の変数を生成するには、シングルクォーテーション(‘)かダブルクォーテーション(“)で囲んだ文字列を代入します。str()を使っても生成することができます。
s = 'Hello'
print(type(s))
s = str('Hello')
print(type(s))
実行結果
<class 'str'>
<class 'str'>
以下のように、数値を文字列とすることもできます。
s = '1'
print(type(s))
実行結果
<class 'str'>

整数(int型)
整数型の変数を生成するには、直接整数を代入するかint()を使います。
i = 1
print(type(i))
i = int(1)
print(type(i))
実行結果
<class 'int'>
<class 'int'>
浮動小数点数(float型)
浮動小数点数型も、直接代入するかfloat()を使います。
f = 0.5
print(type(f))
f = float(1)
print(type(f))
実行結果
<class 'float'>
<class 'float'>
真偽値(bool型)
真偽値とは、「はい」「いいえ」のような二者択一を表すときに使用する値です。
- 真(はい) = True
- 偽(いいえ) = False
bool型の変数を生成するには、TrueかFalseを代入します。
b = True
print(type(b))
b = False
print(type(b))
実行結果
<class 'bool'>
<class 'bool'>
リスト(list型)
リスト型の変数を生成するには、[]を使うかlist()を使います。
l = []
print(l)
print(type(l))
l = list()
print(l)
print(type(l))
実行結果
[]
<class 'list'>
[]
<class 'list'>
[]の中にカンマ(,)を使って値を区切ることで、リストを初期化できます。その際、型を気にすることなく、混ぜこぜで要素を格納できます。
l = [1, 2, 3.14, 'Hello']
print(l)
print(type(l))
実行結果
[1, 2, 3.14, 'Hello']
<class 'list'>

タプル(tuple型)
タプル型の変数を生成するには、()を使うかtuple()を使います。
t = ()
print(t)
print(type(t))
t = tuple()
print(t)
print(type(t))
実行結果
()
<class 'tuple'>
()
<class 'tuple'>
()の中にカンマ(,)を使って値を区切ることで、タプルを初期化できます。リストと同様に、型を気にすることなく要素を格納できます。
t = (1, 2, 3.14, 'Hello')
print(t)
print(type(t))
実行結果
(1, 2, 3.14, 'Hello')
<class 'tuple'>

辞書(dict型)
辞書型の変数を生成するには、{}を使うかdict()を使います。
d = {}
print(d)
print(type(d))
d = dict()
print(d)
print(type(d))
実行結果
{}
<class 'dict'>
{}
<class 'dict'>
辞書型の要素は少し特殊で、「key」と「value」の2つの値を1つの要素として扱います。{}の中に「key」と「value」を「コロン(:)」で繋いで「カンマ(,)」で区切って記述します。
d = {'one': 1, 'two': 2, 'f': 3.14}
print(d)
print(type(d))
実行結果
{'one': 1, 'two': 2, 'f': 3.14}
<class 'dict'>

セット(set型)
セット型の変数を生成するには、{}を使うかset()を使います。しかし、中身を定義していない{}は、辞書型だと認識されてしまうので、空のセットを生成するにはset()を使います。
s = set()
print(s)
print(type(s))
実行結果
set()
<class 'set'>
{}の中にカンマ(,)を使って値を区切ることで、セットの要素を定義できます。
s = {1, 2, 3.14, 'Hello'}
print(s)
print(type(s))
実行結果
{1, 2, 3.14, 'Hello'}
<class 'set'>

データ型の変換
型は、異なる型へと変換することができます。
文字列(str型)に変換
文字列型に変換するには、str()を使います。
以下のコードでは「整数型」を「文字列型」に変換しています。
i = 1
print(i)
print(type(i))
s = str(i)
print(s)
print(type(s))
実行結果
1
<class 'int'>
1
<class 'str'>
整数(int型)に変換
整数型に変換するには、int()を使います。
「文字列型」を「整数型」に変換してみます。
s = '1'
print(s)
print(type(s))
i = int(s)
print(i)
print(type(i))
実行結果
1
<class 'str'>
1
<class 'int'>
整数型に変換できない場合
整数型に変換できない場合は、エラーとなってしまうので注意しましょう!
s = 'one'
i = int(s) # エラー
float型を変換する場合
「浮動小数点数型」を「整数型」に変換する場合は、小数点以下は切り捨てられます。
f = 3.14
i = int(f)
print(i)
f = 0.99
i = int(f)
print(i)
実行結果
3
0
浮動小数点数(float型)に変換
浮動小数点数型に変換するには、float()を使います。
「文字列型」を「浮動小数点数型」に変換してみます。
s = '3.14'
print(s)
print(type(s))
f = float(s)
print(f)
print(type(f))
実行結果
3.14
<class 'str'>
3.14
<class 'float'>
浮動小数点数型に変換できない場合
浮動小数点数型に変換できない場合は、エラーとなってしまうので注意しましょう!
s = 'one'
f = float(s) # エラー
真偽値(bool型)に変換
bool型に変換するには、bool()を使います。
「整数型」を「bool型」に変換してみます。
i = 0
b = bool(i)
print(b)
i = 1
b = bool(i)
print(b)
実行結果
False
True
数値型では、「0」がFalse「それ以外」がTrueとして変換されます。
その他のデータ型の場合
文字列や配列は、空ならばFalse、空でなければTrueに変換されます。
空の場合
st = ''
l = []
t = ()
d = {}
s = set()
print(bool(st))
print(bool(l))
print(bool(t))
print(bool(d))
print(bool(s))
実行結果
False
False
False
False
False
空でない場合
st = 'Hello'
l = [1, 2, 3]
t = ('a', 'b', 'c')
d = {'a': 1, 'b': 2, 'c': 3}
s = {9, 8, 7}
print(bool(st))
print(bool(l))
print(bool(t))
print(bool(d))
print(bool(s))
実行結果
True
True
True
True
True
データ型を分ける意味
データ型を分けるには、以下のような意味があります。
- 性質を変更できる
- 必要な処理(メソッド)を定義できる
- 型を判別できる
性質を変更できる
データによって「なにがしたいか」が異なります。例えば、数値型の場合は、演算に使うことが多いでしょう。なので、数値型同士で演算できるように定義されています。このように、データ型によって「なにができるか、なにができないか」を変更できます。
また、少し特殊な性質も定義されていたりします。例えば、現実世界では文字列と整数でかけ算できませんが、Pythonでは可能となっています。
s = 'Hello'
print(s * 3)
実行結果
HelloHelloHello
必要な処理(メソッド)を定義できる
データ型ごとに異なるメソッドを定義することができます。メソッドとは、型に定義された関数のことを言いますが、とりあえずは、型専用の処理だと覚えておけば問題ありません。
例えば文字列には、大文字にするメソッドや、文字を置換するメソッドが定義されています。
s = 'Hello'
# 文字列を大文字にする
print(s.upper())
# 文字列の'l'を'a'に置換
print(s.replace('l', 'a'))
実行結果
HELLO
Heaao
これらのメソッドを、整数で使うとエラーが発生します。
n = 1234
print(n.upper())
実行結果
Traceback (most recent call last):
File "/Users/user/Desktop/Python/main.py", line 3, in <module>
print(n.upper())
AttributeError: 'int' object has no attribute 'upper'
「int型には、upperなんてメソッドは無いよ」と怒られてしまいました。
型を判別できる
isinstance関数を使うことで、型を判別することができます。型を判別することで、型によって処理を分岐させることができます。
val = 1
if isinstance(val, int):
print('valはint型です')
elif isinstance(val, str):
print('valはstr型です')
elif isinstance(val, list):
print('valはlist型です')
実行結果
valはint型です
ユーザー定義型
型には、以下の2つの種類があります。
組み込み型
組み込み型とは、int型やstr型のようにあらかじめ用意されている型のことをいいます。
ユーザー定義型
ユーザー定義型とは、ユーザーが定義した型のことをいいます。
型を定義するには
class(クラス)を使うことで、型を定義することができます。
以下のコードでは、Testという空のクラスを定義しています。
class Test:
pass
型を使う
クラスを使うには以下のようにインスタンス化します。
test = Test()
型を確認してみる
ユーザー定義型の型名を確認してみます。
print(type(test))
実行結果
<class '__main__.Test'>

まとめ
この記事では、Pythonのデータ型について解説しました。
- データ型とは? = 『データの型である』
- 型の種類 = 『str、int、float、bool、list、tuple、dict、set、など』
- 型の確認 = 『type(オブジェクト)』
- 動的型付け = 『代入した値によって型が推測される』
- 型の変換 = 『型名()で型を変換できる(str()など)』
- 型の判定 = 『isinstance(オブジェクト, 型)』
とても覚える内容が多くなってしまいましたが、一度に覚える必要はありません。型は必ず使うので、使いながら少しずつ覚えていきましょう!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ