こちらではPythonであつかうデータ型についてのご紹介をします。
データ型とは、プログラミング言語が扱うデータをいくつかの種類に分けたものです。
そもそも「データ」とは、「プログラムの処理対象となるもの」という広い意味を持っていて、一口に「データ」と言ってもその種類は多くあります。
そのためプログラミング言語で「データ」を扱うさいには、どのようなタイプのデータであるかを明確にします。詳細は後述しますが、例えば「データ型」の代表的なものとしては「整数型」や「文字列型」といったものがあります。
データ型とは
データ型とは、データを種類別に分けたもののことです。
以下がこちらでご紹介するデータ型の一覧です。
分類 | 型 | 内容 |
数値 | int | 整数型 |
float | 浮動小数点型 | |
文字 | str | 文字列型 |
グループ | list | リスト型 |
tuple | タプル型 | |
dict | 辞書型 | |
set | 集合型 | |
その他 | bool | 論理値(「True」or「False」) |
数値
数値をあつかうデータ型のことです。
int|整数型
「整数型」とは、整数の数値をあつかう型のことです。
num = 1 print(type(num))
<class 'int'>
float|浮動小数点型
「浮動小数点型」とは、小数点付きの数値をあつかう型のことです。
decimal = 0.1 print(type(decimal))
<class 'float'>
文字
str|文字列型
「文字列型」とは、文字列をあつかう型のことです。
string = "文字" print(type(string))
<class 'str'>
エスケープシーケンス
エスケープシーケンスとは、プログラムを記述するうえで文字列として入力ができない文字に対して用いる特殊文字のことです。
Windowsでは「\(記号:円マーク)」、Macでは「半角の\(記号:バックスラッシュ)」をつかいます。
以下、Windowsでの具体的なエスケープシーケンスの例をご紹介します。
記号 | 内容 |
\\ | 円マークを表示 |
\’ | シングルクォーテーションを表示 |
\” | ダブルクォーテーションを表示 |
\0 | Null文字 |
\n | 改行(LF) |
\r | 改行(CR) |
\t | 水平タブ |
\v | 垂直タブ |
print("\\100")
\100
print('It\'s rain.')
It's rain.
print("「\"」はダブルクォーテーションです。")
「"」はダブルクォーテーションです。
print("\0") type(print("\0"))
NoneType
print("start","\nABC")
start
ABC
print("start","\rABC")
ABCrt
「\r」でカーソルを左端に戻しています。「start」の左端から「ABC」と入力をしているため、文字が上書きされた状態になっています。
print("start","\tABC")
start ABC
print("start","\vABC")
start ABC
わたしの環境では機能しませんでした。なお「垂直タブ」とは、縦方向に4行分を改行で埋めるために使われる制御文字です。
raw文字列
「raw文字列」とは、「\」をエスケープシーケンスとして扱わないために使う方法です。
例えば、フォルダ名を指定するときなどにつかわれます。
「raw文字列」は、文字列の先頭に「r」を付けます。
print(r"C:\Users\user")
C:\Users\user
「\」を文字列として認識させることができます。
インデックス番号
kana = "あいうえお" print(kana[1])
い
「[](記号:角カッコ)」でインデックス番号による位置指定ができます。
ここでの注意点は、pythonでは「左端が1ではなく、0であること」です。上の例でインデックス番号「1」を指定していますが、2文字目の「い」を取得していることが確認できます。
format関数
「format関数」をつかうことによって、文字列で変数をつかうことができます。
first = "始めに" second = "次に" print("{0}これ、{1}それをします。".format(first,second))
始めにこれ、次にそれをします。
「インデックス番号」と同じように番号が「0」からはじまる点にご注意ください。
format関数の引数に順番が割り振られます。こちらの例では、「{0}と”first”」「{1}と”second”」が関連付いています。
グループ
list|リスト型
「リスト型」とは、値をグループとしてまとめる型のことです。
リストの中には、「数値」「文字」「グループ」を含めることができます。
「リスト型」は「[](記号:角カッコ)」をつかって値を囲みます。
num = [1,2,3,4,"五",["A","B"]] print(type(num))
<class 'list'>
# num = [1,2,3,4,"五",["A","B"]] num[0]
1
左端は「0」で指定します。
# num = [1,2,3,4,"五",["A","B"]] num[1:3]
[2,3]
「:(記号:コロン)」をつかって範囲指定ができます。
インデックス番号「1」から「3未満」までを指定しています。こちらの例では、「2番目から3番目まで」のデータを取得しています。「4番目」は含まれない点に注意してください。
# num = [1,2,3,4,"五",["A","B"]] num[4:]
['五', ['A', 'B']]
インデックス番号「4」以降を指定しています。
# num = [1,2,3,4,"五",["A","B"]] num[0:5:2]
[1, 3, '五']
インデックス番号「0」から「5未満」までを指定しています。そのうえで、「2つ置き」に値を取得しています。
# num = [1,2,3,4,"五",["A","B"]] num[-1]
['A', 'B']
右側から数えて最初の値は「-1」で指定されます。
# num = [1,2,3,4,"五",["A","B"]] num[-2:-5:-1]
['五', 4, 3]
右側から数えて、「2番目」から「5番目未満」を指定しています。「5番目」は含みません。そのうえで「-1つ置き」に値を取得(つまり右側からひとつずつ取得)しています。
# num = [1,2,3,4,"五",["A","B"]] num[5][1]
'B'
「リスト」のなかの「リスト」を指定することができます。インデックス番号「5」の「リスト」を指定したうえで、インデックス番号「1」を指定しています。
tuple|タプル型
「タプル型」とは、変更できない値をグループとしてまとめる型のことです。
「タプル型」は、「リスト型」に似ていますが、「値の変更ができない」といった特徴があります。
値の指定方法などは「リスト型」と基本的におなじ方法をつかいます。
「タプル型」は「()(記号:丸カッコ)」をつかって値を囲みます。
tup = ("年","月","日") print(type(tup))
<class 'tuple'>
tup_ymd[1:]
('月', '日')
インデックス番号「1」以降を取得しました。
「タプル型」の値を更新しようとするとエラーになります。
「リスト型」と「タプル型」の例をつかって比較してみましょう。
まずは「リスト型」の値を変更します。
list_ymd = ["年","月","日"] print(type(list_ymd))
<class 'list'>
list_ymd[0] = "ネン" list_ymd
['ネン', '月', '日']
つぎに「タプル型」の値を変更します。
tup_ymd = ("年","月","日") print(type(tup_ymd))
<class 'tuple'>
tup_ymd[0] = "ネン"
TypeError: 'tuple' object does not support item assignment
このように値を変更しようとするとエラーが表示されます。
dict|辞書型
「辞書型」とは、「キー」をもつ値をグループとしてまとめる型のことです。
「キー」とは、「値」に対して「1対1」の関係でインデックス番号の代わりに設定される「数値」や「文字列」のことです。
「辞書型」は「{}(記号:波カッコ)」をつかって値を囲みます。「辞書型」は{キー:値}という並びで構成されています。
dic = {"a":"apple","b":"bike",1:"one"} print(type(dic))
<class 'dict'>
dic["a"]
'apple'
「キー」を指定することによって「値」を取得できますが、インデックス番号による取得はできません。
dic.keys()
dict_keys(['a', 'b', 1])
「キー」のみを取得することができます。
dic.values()
dict_values(['apple', 'bike', 'one'])
「値」のみを取得することができます。
dic.items()
dict_items([('a', 'apple'), ('b', 'bike'), (1, 'one')])
「キー」と「値」をまとめて取得することもできます。
set|集合型
「集合型」とは、重複ができない値をグループとしてまとめる型のことです。
また、インデックス番号を持たないことも特徴としてあげられます。
「集合型」は、set関数のなかに「[](記号:角カッコ)」をつかって値を囲みます。
alphabet = set(["a","b","c"]) print(type(alphabet))
<class 'set'>
値が重複していた場合の表示を見ておきましょう。
alphabet = set(["a","b","c","c"]) alphabet
{'a', 'b', 'c'}
文字列「c」が2つではなく、1つになっています。
alphabet[1]
TypeError: 'set' object is not subscriptable
「順番」を持っていないため、このようにインデックス番号で値の取得ができません。
alphabet.add("d") alphabet
{'a', 'b', 'c', 'd'}
add関数をつかって値を追加します。
frozenset|集合型
値の更新ができない集合型のためにfrozenset関数もあります。
frozen_abc = frozenset(["a","b","c","c"]) print(type(frozen_abc)) frozen_abc
<class 'frozenset'>
frozenset({'a', 'b', 'c'})
frozen_abc.add("d")
AttributeError: 'frozenset' object has no attribute 'add'
このように、add関数をつかっても値の追加はできません。
その他
bool|論理値(「True」or「False」)
「論理値」とは、真偽値である「True」もしくは「False」の2種類の値をもつ型のことです。
t_or_f = True print(type(t_or_f))
<class 'bool'>