1.3. pythonのdata type(データ型)

Pythonの変数にはいろいろなdata type(データ型)があるが、最も基本的なタイプとして

  • int(整数)
  • float(浮動小数点数)
  • string(文字列)
  • boolean(ブール)

の4つがある。ある変数がどのtypeになっているかはtypeというfunctionで調べられる。

In [1]:
a = 1
b = 1.2
print(type(a))
print(type(b))
<class 'int'>
<class 'float'>

 変数aは、'int'bは、'float'と表示されている。値に小数点がついていれば自動的にfloatに、整数になっていればintとして定義される。ここで表示されているclassは非常に重要な概念で、後から時間を割いて説明するが、とりあえず今のところは、data typeのことだと思って問題ない。

 stringは'(シングルクォーテーション)か、"(ダブルクォーテーション)で囲む。"'を厳密に区別する言語もあるが、pythonでは特に区別はない。

In [2]:
name = "Test"
print(name)
print(type(name))
Test
<class 'str'>

 booleanは、TrueFalseの2値で、このTrueFalseの頭文字は大文字にしなければならない。たとえばis_studentを変数名として、

In [3]:
is_student = True
print(is_student)
print(type(is_student))
True
<class 'bool'>

int, float, string, booleanの4つの基本型のほかにも重要な型がいくつかある。以下では、list, tuple, dictonaryの三つを取り上げる。この三つは、一般的なpythonコードを書く場合は非常によく使うtypeである。

(1)リスト(list)

 リストは文字通り変数のリストである。配列(array)と呼ばれることもある。変数を,で区切って、[]でくくった値のまとまりである。

In [4]:
a = [1, 2, 3]
type(a)
Out[4]:
list

リストの個々の要素の型は異なっていても構わないので、下のように混ぜてもよい。

In [5]:
a = ["abc", 1.5, True, 2]
print(a)
type(a)
['abc', 1.5, True, 2]
Out[5]:
list

 リストの中の要素にアクセスしたいとき、例えばリスト aの$0$番目の要素を表示したい場合はa[0]のように、配列番号を[]でくくって変数名の後に付ける。非常に重要なことだが、pythonではlistの要素番号は0から始まる

In [6]:
print(a[0])
abc

 普通のアプリなど一般的なpythonのコードで配列を使う場合にはこのlistをよく使うが、数値計算ではlistによる配列はほとんど使わず、NumPyというモジュールが提供するndarrayというtypeの配列を使う。詳細についてはNumPyのところで紹介する。

(2) tuple(タプル)

 tupleはlistによく似た変数のまとまりである。listでは[]でくくったが、tupleでは()でくくるか、記号を何もつけない。

In [7]:
list_a = ["abc", 1.5, 2]
tuple_a = ("abc", 1.5, 3)
tuple_a2 = "abc", 1.5, 3
print(list_a)
print(type(list_a))
print(tuple_a)
print(type(tuple_a))
print(tuple_a2)
['abc', 1.5, 2]
<class 'list'>
('abc', 1.5, 3)
<class 'tuple'>
('abc', 1.5, 3)

 listとtupleの大きな違いは、定義したあとから値を変更できるかどうかという点にある。これをmutable/immutable(書き換え可能/不可)という。tupleは一度定義したら書き換えることがでない。listはmutableだが、tupleはimmutableなどと言う。list_aの0番目の要素を"efg"で書き換えようとすると、

In [8]:
list_a[0] = "efg"
print(list_a)
['efg', 1.5, 2]

正しく書き換わっているが、tupleで同じことをしようとすると、

In [9]:
tuple_a[0] = "efg"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-07295fdd6b6a> in <module>
----> 1 tuple_a[0] = "efg"

TypeError: 'tuple' object does not support item assignment

 'TypeErro: 'tuple' object does not support item assignmentというエラーになってしまい、値を書き換えることができないことが分かる。tupleは一度定義したあとで絶対変更したくない変数(定数など)に利用する。(モジュールによってはfunctionの引数をtupleで定義する場合がある。この文章の意味が分からない人はおいおい説明するので今は無視して構わない。)

(3) dictionary (辞書)

 dict型は文字通り辞書で、”キーワード(keyword)”になる言葉と”値”のセットをまとめて定義したものである。例えば、

In [10]:
dict_a = {"pi" : 3.14, 
          "number": 1, 
          "dog" : "cute",
         }

 listやtupleは配列の順番が非常に重要な意味を持っているが、辞書型では配列番号を気にする必要はない。辞書型の中身にアクセスする場合は、keywordを[]の中に書けばよい。

In [11]:
dict_a["pi"]
Out[11]:
3.14

 listやtupleの場合は配列番号で要素にアクセスするが、dictionaryの場合はkeywordでアクセスするわけだ。

In [12]:
dict_a["dog"]
Out[12]:
'cute'

 dict型はdictを使って以下のように定義することもできる。

In [1]:
dict_a = dict(pi=3.14,
             number=1,
             dog='cute')
dict_a['pi']
Out[1]:
3.14

 実際のコードを書いていくと分かるようになるが、dictionaryは可読性の高いコードを書くのに非常に便利である。


当サイトのテキスト・画像の無断転載・複製を固く禁じます。
Unauthorized copying and replication of the contents of this site, text and images are strictly prohibited.
© 2019 Go Yusa