Python入門|データ型の基本【種類と特徴】のイメージ画像

Python入門|データ型の基本【種類と特徴】

  • 公開日:2018/05/24
  • 更新日:2019/07/15
  • 投稿者:n bit

変数の理解をより深めていくためにはデータ型の学習が必要です。頻繁に利用するデータ型には【数値(整数・小数点)・文字列・真偽・リスト・辞書・タプル・セット・None】等があります。今回はこれらの基本的な種類や特徴を解説します。

本ページの学習目的:データ型の種類があることと、そして、種類がある意味、各データ型の特徴と作成方法を理解すること

  • Python

この記事は約 分で読めます。(文字)

データ型とは

データ型とはその名の通りデータの型です。データ型は「class」とも呼ばれます。変数に入力された値によりその変数のデータの型は決まります。変数についてはこちらのページで解説しています。

データの型にはいくつか種類がありますがここでは頻繁に利用されているデータ型を解説します。各データ型の特徴やデータ型の作成方法などを解説していますが、各データ型の詳細については後ほどそれぞれの説明ページで解説していきます。今はどのような種類がありどのような方法で作成するのかを理解していきましょう。

データ型の種類

Pythonでのデータ形で頻繁に利用されている種類は以下の7つです。

  • int型:整数
  • float型:小数点
  • str型:文字列
  • bool型:真偽値
  • list型:リスト
  • tuple型:タプル
  • dict型:辞書

データ型というのは単純にデータの種類やデータのタイプと同意です。このデータのタイプは値を変数に代入する方法によって自動的にその変数のデータタイプが決定されます。

変数が今どのデータタイプになっているのかを確認するための関数にtype関数が用意されています。type関数の使い方はtype()と記述し、()内にデータタイプを調べたい変数を引数として渡します。

こちらの関数を利用しながら、それぞれのデータ型の特徴と、どのようにしてデータタイプを決定するのかを確認していきましょう。

int型:整数

まずは整数の数値を扱うint型です。整数ですので扱える数値は、【「0」や、「10」、「1500」、「-2」】等の、小数点を含まない0や、正の数、負の数になります。

それではint型の変数を作成してtype関数で確認してみましょう。type関数をprint関数で括ることで直接タイプ関数の結果を出力することができます。

int型の作成方法

int型の変数を作成するには、変数に整数を直接代入します。

x = 10

print(type(x))

出力結果

<class 'int'>

'int'タイプと表示されました。

float型:小数点

int型は数値の中でも整数のみを扱いましたが、float型は小数点の数値を扱います。小数点を含む数値は全て含まれ、「10.5」や、「-1.25」等の以外にも【「0.0」や、「10.0」】等も含んだ0.0、正の数、負の数になります。

float型の作成方法

float型の変数を作成するには、変数に小数点数を直接代入します。

x = 10.5

print(type(x))

出力結果

<class 'float'>

'float'タイプと表示されました。

str型:文字列

str型は文字列を扱います。str型として代入された文字、記号、数値などは全て文字列として扱われます。

str型の作成方法

str型の変数を作成するには、ダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲んだ文字列を代入します。

x = 'テキスト'

print(type(x))

出力結果

<class 'str'>

'str'タイプと表示されました。

数値データでも、ダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲んだ場合は文字列として代入されます。

x = '1'

print(type(x))

出力結果

<class 'str'>

数字の「1」を入力しましたが出力結果は'str'タイプと表示されていますね。このようにダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲まれたものは全て文字列として扱われます。

bool型:真偽値

bool型は真偽値を扱います。真偽値とは『真:True』か『偽:false』を判断するものです。

bool型の作成方法

bool型の変数を作成するには、True、または、Falseを代入します。

x = True

print(type(x))

出力結果

<class 'bool'>

'bool'タイプと表示されました。

list型:リスト

list型はリストを扱います。リストに関してはリストの解説ページでまた詳しく説明していきます。ここでは1つの変数で複数の値を扱うことができるものと理解しておけばよいでしょう。

list型の作成方法

list型の変数を作成するには、代入値をカンマ【,】で区切って[]で囲み代入します。リストの中には数字や文字列、そして、それらを混ぜて代入することも可能です。

x = [10, 20, 30, 'テキスト']

print(type(x))

出力結果

<class 'list'>

'list'タイプと表示されました。

tuple型:タプル

tuple型はタプルを扱います。タプルに関してはタプルの解説ページでまた詳しく説明していきます。ここでは一度代入した値を後から変更することができないリストと理解しておけばよいでしょう。

tuple型の作成方法

tuple型の変数を作成するには、代入値をカンマ【,】で区切って()で囲み代入します。タプルの中には数字や文字列、そして、それらを混ぜて代入することも可能です。

x = (10, 20, 30, 'テキスト')

print(type(x))

出力結果

<class 'tuple'>

'tuple'タイプと表示されました。

dict型:辞書

dict型は辞書を扱います。辞書に関しては辞書の解説ページでまた詳しく説明していきます。ここではリストのように1つの変数で複数の値を扱うことができ、かつ、それぞれにキーとなるラベルをつけることができるものと理解しておけばよいでしょう。

dict型の作成方法

dict型の変数を作成するには、キーと代入値をコロン【:】でつなげて一組にし、カンマ【,】で区切って{}で囲み代入します。キーは文字列になりますので、ダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲んでください。辞書の代入値の中には数字や文字列、そして、それらを混ぜて代入することも可能です。

x = {'a':10, 'b':20, 'c':30, 'd':'テキスト'}

print(type(x))

出力結果

<class 'dict'>

'dict'タイプと表示されました。

Pythonのデータ型は「動的型付け」

ここまで、感覚的にそちらのほうが理解しやすいので「変数に入力された値によりその変数のデータの型は決まる」と説明してきました。

正確には、Pythonは「動的型付き言語」と呼ばれるプログラミング言語で変数を作成するタイミングでは特に型の限定までは行われておらず実行時に判定されているのです。

Note

動的型付け

動的型付けでは、定義では型の限定を行わず、実行時に合致するデータが渡されると期待する、または合致するデータであるかを判定する

出典:動的型付け - Wikipedia

そのため同じ変数にいくつか違う形の値を代入した場合、最終的にはその変数が実行されたときの直前に代入された値によって判定されます。

x = 10

x = 10.5
print(type(x))

出力結果

<class 'float'>

このように変数\(x\)に最初整数を代入し、続けて変数\(x\)に小数点数を代入した場合、type関数で実行時最後に変数\(x\)に代入された小数点数を判定しfloat型が返ってきます。

例で示したように同じ変数名を使いまわす場合は実行時直前に代入した値がどのデータ型に対応するものなのか注意しておく必要があります

各データ型がある意味と専用ツール「メソッド」

ここまで各データ型の簡易な特徴と紹介そして作成方法を解説してきました。このようにデータ型に分かれているのは何故でしょうか?

それは同じデータ型同士の変数でなければ行えないことや、それぞれのデータ型によって扱い方に違いがあるからです。また、各データ型は専用のツールを持っています。この専用ツールはそのデータ型でしか利用することができません。このような各データ型が持つ専用ツールのことを「メソッド」と呼びます。

同じデータ型同士の変数でなければ行えないこと

同じデータ型同士の変数でなければ行えないことの違いがわかりやすい例は演算でしょう。例えばint型の数値とstr型の数値では演算を行うことができません。以下の変数\(a\)と\(b\)は同じく「10」が代入されています。print関数で出力した場合どちらも同じように「10」が出力されています。

a = 10

print(a)

b = '10'
print(b)

出力結果

# a

10

# b
10

しかしそれぞれのタイプをtype関数で出力するとデータ型が違っています。変数\(a\)はint型で変数\(b\)はstr型です。

a = 10

print(type(a))

b = '10'
print(type(b))

出力結果

# a

<class 'int'>

# b
<class 'str'>

そのため変数\(a\)と\(b\)を足し算で計算しようとすると以下のようなエラーが出ます。

a = 10

b = '10'
y = a + b
print(y)

出力結果

TypeError: unsupported operand type(s) for +: 'int' and 'str'

「タイプエラー:'int型'と'str型'は'+'にサポートされていないタイプ(のオペランド)です」といった感じの内容のエラーです。

Note

オペランドとは

オペランドとは、コンピュータの演算における値や変数のことである。オぺランドは演算の種類や内容を表す演算子(オペレータ)によって演算対象となるもので、例えば「\(7×3\)」という計算式があれば、「7」と「3」がオペランドとなる。

出典:オペランドとは - FA用語 Weblio辞書

オペランド:「7」と「3」

オペレータ(演算子):「\(×\)」

後々のページで詳しく解説しますがこのような場合は同じデータ型に変換してあげる必要があります。

y = a + int(b)

print(y)

y = str(a) + b
print(y)

出力結果

# y = a + int(b)

20

# y = str(a) + b
1010

「\(y = a + int(b)\)」は変数\(b\)をint型に変換して整数同士の演算を行いましたので\(10+10=20\)となっています。一方「\(y = str(a) + b\)」は変数\(a\)をstr型に変換して文字列同士の演算を行いましたので10と10を横並びに連結して1010と言う文字列です。

数値と数値、文字列と文字列同士であれば問題なく演算を行うことができます。

このようにデータ型は同じデータ型同士でなければ行えない処理が存在します。

各データ型による扱い方の違い

各データ型による扱い方の違いがわかりやすいのは変数内の値の取得方法でしょう。こちらも後々のページで詳しく解説しますので、ここでは参考程度に見ておいてください。

例えば、list型とdict型では値の取得方法が違います。先程の各データ型の特徴を説明するときに利用したコードを使って解説してみます。

list型は前から2番目の値、dict型は前から3番目の値を取得してみましょう。

# list型:

x = [10, 20, 30, 'テキスト']
y = x[1]
print(y)

# dict型:
x = {'a':10, 'b':20, 'c':30, 'd':'テキスト'}
y = x['c']
print(y)

出力結果

# list型:y = x[1]

20

# dict型:y = x['c']
30

dict型に関してはキーが存在していますので直感的にも取得方法をイメージしやすいかと思います。取得したい値のキーを指定することで出力されます。

list型にはキーが存在しない代わりにインデックス番号が割り振られています。インデックス番号は0から始まる番号が各値に順番で割り振られています。そのため前から2番目の値を取得するためにはインデックス番号「1」を指定することで値が出力されます。

変数内の値を取得する方法1つとっても、このように各データ型によって処理方法に違いがあります

各データ型の専用のツール「メソッド」

各データ型の専用のツール「メソッド」についても1つ参考となる例を示します。str型が持つupper()メソッドがあります。こちらは小文字の文字列を大文字に変換するためのメソッドです。

x = 'abc'

y = x.upper()
print(y)

出力結果

ABC

このように小文字の「abc」が大文字の「ABC」に変換されて出力されています。例えばこれをint型に適用するとどうなるでしょうか。

x = 123

y = x.upper()
print(y)

出力結果

AttributeError: 'int' object has no attribute 'upper'

int型にはupper()メソッドが無いというエラーが返されています。

このように各データ型はそれぞれのデータ型のみが利用できる専用ツール「メソッド」を保有しています。

今日のdot

ここまで学習してきたように、これら各データー型には特徴や作成方法だけではなく、処理方法の違いや保有しているメソッドにも違いがあります。そのため今後プログラミングを行うときには現在扱っている変数がどのデータ型の変数なのかが重要になってきます。

以下に頻繁に利用するデータ型の特徴と作成方法をまとめた一覧表を掲載しておきます。もしわからなくなってしまったり忘れてしまったらこちらの表を見返してください。

データ型データ型名称データ型の説明
文字列str文字列タイプを扱う型
' または "で囲で代入
整数int整数タイプを扱う型
整数(正数、0、負数など)
整数を代入
小数float小数タイプを扱う型
少数点数を代入
真偽bool真偽タイプを扱う型
True(成立)False(不成立)いずれかを代入
リストlistリストタイプを扱う型
[]で囲み(, )で区切って代入
数値や文字列もリストの要素にできる
(これらを混ぜることも可能)
タプルtupleタプルタイプを扱う型
()
で囲み(, )で区切って代入
数値や文字列もタプルの要素にできる
(これらを混ぜることも可能)
リストとよく似ているが、違いは一度セットすると後から変更できない
タプルは、簡単に言うと、要素の追加や削除ができないリスト
辞書dict辞書タイプを扱う型
{}で囲み(, )で区切って代入
キーと値はコロン(: )でつなげて一組
キー(key)と値(valdue)をペアで保存し、キーを使って値を呼び出せる
数値や文字列も辞書の要素にできる
(これらを混ぜることも可能)