Pythonの基本 リストと辞書とタプル

f:id:wataru_boss:20180611133724p:plain

こんにちは。BOSSです。

Pythonの型にはいくつかありますが、リストと辞書とタプルはややこしい!

リストと辞書はなんとなくよく使うからわかるけど、タプルがなぁ・・・

私自身そういう風に感じているところです。

そこで今日はリスト、辞書、タプルの違いを調べてまとめておこうかと思います。

リスト

リスト型とは?

リストは複数の要素を格納できるコンテナ型のオブジェクトになります。

メリットは簡単。一度にたくさんのデータを扱えるという点です。

リスト型の基本

リストは次のように定義することができます。

list = []

この状態で空のリストが作れました。要素を入れてみます。

number = [1, 2, 3, 4, 5]   # int型リスト

fruits = ['ぶどう', 'もも' , 'かき']   # 文字列型リスト

ist = ['ぶどう', 3, 'もも', 4, 5]   # 型ごちゃ混ぜリスト

こんな感じで、異なる型でも要素にとることができます。

ちなみに要素の書き換えもできます。

fruits = ['ぶどう', 'もも' , 'かき']
fruits[1] = 'マンゴー'
print(fruits)

これを実行すると

 ['ぶどう', 'マンゴー' , 'かき']

こうなります。あとでも書きますが、インデックスは0スタートなので1は二つ目の要素です。

apendメソッド、insertメソッド、popメソッド

リストでよく使う3つのメソッド。追加、挿入、削除です。 まずは追加から。

リストオブジェクト.append(オブジェクト)

でリストの最後に追加ができます。例えば

fruits = ['ぶどう', 'もも' , 'かき'] 
fruits.append('りんご')

print(fruits)

とすることで次の結果が得られます。

['ぶどう', 'もも' , 'かき', 'りんご’]

次に挿入。リストの途中に要素を挿入したい場合の操作で、使い方は以下の通り。

リストオブジェクト.insert(インデックス, オブジェクト)

具体的にみてみます。

fruits = ['ぶどう', 'もも' , 'かき'] 
fruits.insert(1, 'りんご')

print(fruits)

とすることで、

['ぶどう', 'りんご', 'もも' , 'かき']

となります。インデックスは0スタートであることに注意。

続いて削除の仕方。使い方は次の通り。

リストオブジェクト.pop(インデックス)

指定したインデックスの要素を削除します。使ってみましょう。

fruits =['ぶどう', 'りんご', 'もも', 'かき']
fruits.pop(2)
print(fruits)

そうすると以下の通りに表示されます。

['ぶどう', 'りんご', 'かき']

辞書

辞書型とは?

次は辞書型です。辞書型とは、「{}」の中にkeyとvalueの組み合わせが含まれているデータのことをさします。使い方は以下の通り。

{key1:value1,key2:value2,key3:value3}

keyとvalueは常にワンセットです。 具体的にみていきましょう。

fruits = {'ぶどう' : 3, 'りんご' : 5, 'かき' : 2}

これで辞書型のオブジェクトが出来上がりました。

辞書型の基本

辞書型はリスト型のようにインデックスで順番が付いているわけではありません。

keyとvalueが常に紐づいている関係です。

例えば...

fruits = {'ぶどう' : 3, 'りんご' : 5, 'かき' : 2}

print(fruits['ぶどう'])

とすると

3

と返ってきます。keyからvalueが引っ張られてきた感じですね。

注意すべきは、要素へアクセスするときfruits{'ぶどう'}ではなくfruits['ぶどう']です。[]です。

タプル

タプルとは?

タプルがややこしい。この記事もタプルのために書いているようなものです。

タプルはリストと同じように複数の要素を持つことができるオブジェクト。ではリストとはどう違うのか。

タプルはオブジェクトを作ったあとに変更することができないという点がリストとの違いです。

こういう変更できませんよという性質を「イミュータブル」( immutable )といいます。

リストとタプル非常によく似ています。
ではタプルの使い所はなんでしょうか?それは

* 変更を許したくない時

と考えるとわかりやすいです。

タプルの基本

tuple = ()

で定義されます。具体的には

近畿 = ('大阪府', '京都府', '滋賀県', '兵庫県', '和歌山県', '三重県')

こんな感じ。

リストとタプルの違い

まだリストとの違いは感じられません。

ではリストではできた要素の書き換え。やって見ましょう。

近畿 = ('大阪府', '京都府', '滋賀県', '兵庫県', '和歌山県', '三重県')
近畿[0] = '東京都'

結果はこうなるかと思います。

    近畿[0] = '東京都'
TypeError: 'tuple' object does not support item assignment

つまり、タプルはこういった書き換えるという操作は許されないのです。ここがリストとの違い。

大きなプログラムを書いているときに値が何かの間違いで代入されて書き換えられてしまう。

そういったことが防げるのです。

これがリストだったらしれっと更新されてしまうんですよね。

まとめ

今回はリスト型、辞書型、タプルについてまとめました。

私の勉強範囲をまとめた感じですので

今後私の理解が深まったら訂正、追記どんどんしていこうかなと思います。