【Python】データ型とはなんだろう?【型の種類や使い方】

Python

この記事では、Pythonのデータ型について解説します。プログラミング言語には、データ型と呼ばれるものがあります。データ型がどのようなものなのか学び、プログラミングの理解を深めましょう。

この記事で学べること
  • データ型とは?
  • 型の種類
  • 型の確認
  • 型の初期化
  • 型の変換
  • 型を判定する

変数についてよく知らない方は、下記の記事を合わせて読むことで理解がさらに深まります。

【Python】変数とはなんだろ?【変数の使い方】【Python】変数とはなんだろ?【変数の使い方】

データ型とは?

データ型とは、データの型です。

プログラミングでは、色々なデータを扱います。そのデータが持つ性質は、によって定められています。

例えば、整数は「int」という型で表され、文字列は「str」という型で表されます。このように、データの種類によって型を分けることで、そのデータがどのような性質を持ち、どのように取り扱うべきかをそれぞれ定義することができます。

データ型の種類

Pythonでよく使われるデータ型には、以下のようなものがあります。

タイプ型名代入方法
文字列strs = ‘Hello’
整数inti = 1
浮動小数点数floatf = 2.71
真偽値boolb = True
b = False
リストlistl = [1, 2, 3]
タプルtuplet = (1, ‘a’, 2)
辞書dictionaryd = {‘one’: 1, ‘two’: 2}
セット sets = {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'>

【Python】文字列の使い方 【str型】【Python】文字列の使い方 【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型の変数を生成するには、TrueFalseを代入します。

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'>

【Python】list(リスト)とはなんぞや?【リストの使い方】【Python】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'>

Pythonのtuple(タプル)とはなんぞや?【タプルの使い方】Pythonの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'>

【Python】dictionary(ディクショナリ)とはなんぞや?【辞書の使い方】【Python】dictionary(ディクショナリ)とはなんぞや?【辞書の使い方】

セット(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'>

【Python】set(セット)とはなんぞや?【セットの使い方と集合演算】【Python】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】型を定義する方法【class(クラス)の使い方】【Python】型を定義する方法【class(クラス)の使い方】

まとめ

この記事では、Pythonのデータ型について解説しました。

今回のおさらい

  • データ型とは? = 『データの型である』
  • 型の種類 = 『str、int、float、bool、list、tuple、dict、set、など』
  • 型の確認 = 『type(オブジェクト)』
  • 動的型付け = 『代入した値によって型が推測される』
  • 型の変換 = 『型名()で型を変換できる(str()など)』
  • 型の判定 = 『isinstance(オブジェクト, 型)』

とても覚える内容が多くなってしまいましたが、一度に覚える必要はありません。型は必ず使うので、使いながら少しずつ覚えていきましょう!

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

タイトルとURLをコピーしました