この記事では、Python のデータ型の種類や使い方について解説します。
Python には初めから多くのデータ型が用意されていて、どの型にも機能が豊富に実装されています。データは変数に代入して扱います。
変数について詳しく知りたい方は、下記の記事を参照してください。
それでは、Python のデータ型について見ていきましょう❗️
データ型とは、その名前の通りデータの型です。プログラミングでは色々なデータを扱いますが、そのデータが持つ性質は「型」によって定められています。
例えば、整数は int
という型で表され、文字列は str
という型で表されます。
このように、データの種類によって型を分けることで、そのデータがどのような性質を持ち、どのように取り扱うべきかをそれぞれ定義することができます。
また、言語によってあらかじめ用意されている型を「組み込み型」と呼び、ユーザーが定義した型を「ユーザー定義型」と呼びます。
それでは、Python が用意している型を見ていきましょう!
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} |
試しにそれぞれのデータ型を生成して型を確認してみましょう❗️
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
を代入します。
b = True
print(type(b))
b = False
print(type(b))
実行結果
<class 'bool'>
<class 'bool'>
bool()
を代入すると False
となる。
b = bool()
print(b)
実行結果
False
リスト型の変数を生成するには、[]
を使うか 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()
を使います。
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()
を使います。
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()
を使います。
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'>
そもそもなぜデータ型を分ける必要があるのでしょうか?
データ型を分けることで以下のようなメリットがあります。
データによって「なにがしたいか」が異なります。
例えば、数値型は演算に使うことが多いでしょう。なので、数値型同士で色々な演算ができるように定義されています。
このように、データ型を分けることによって「なにができるか、なにができないか」をそれぞれ変更することができます。
また、少し特殊な性質も定義されていたりします。
例えば、現実世界では文字列と整数でかけ算はできませんが、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())
実行結果
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型です
どのように自分で型を定義できるのか簡単に見ていきます。
型を定義する
自ら型を定義するには、class(クラス)
を使います。
以下のコードでは、Test
という空のクラスを定義しています。
class Test:
pass
型を使う
クラスを使うには、以下のようにインスタンス化します。
test = Test()
型を確認してみる
ユーザー定義型の型名を確認してみます。
print(type(test))
実行結果
<class '__main__.Test'>
簡潔に説明したので詳しく知りたい方は以下の記事を参照してください❗️
この記事では、Pythonのデータ型について解説しました。
とても覚える内容が多くなってしまいましたが一度に覚える必要はありません。使いながら少しずつ覚えていきましょう!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ
View Comments