どうも~むるむるです~
今回の記事では「データ型:list, tuple, dict」について学んでいきたいと思います.
このシリーズではプログラミング初心者が最低限のPythonの知識を最短で身に着けることを目標としています.
このシリーズでは以下の順番でPythonの基本的な知識を学習していきます.
- Python:Anacondaインストールとhello world,簡単な計算,コメントアウト
- 変数について
- データ型:int, float, str, bool
- データ型:list, tuple, dict (この記事)
- 条件分岐:if – else 文
- 繰り返し:for文,while文
- 関数の定義,呼び出し,ラムダ式
- クラス
- モジュールのインポート
- 例外処理:try, except, else, finally
- map, reduce, filter
複数のデータを表現するためのデータ型
さて,前回まででは値を一つだけであるデータ型(int, float, str, bool)を紹介してきましたが,ここで紹介するlist(リスト), tuple(タプル), dict(辞書)型のデータ型は値を複数持つことができます.
以下のコードを見てみましょう.
# 変数(複数の値) # list l1 = [1, 2, 3] # tuple t1 = (1, 2, 3) # dict d1 = {'key1': 'value1', 'key2': 'value2'}
変数「l1」,「t1」,「d1」はそれぞれ list, tuple, dict型のになっており,複数の値を格納しています.
list, tuple, dictはそれぞれ「list[ ]」,「tuple ( )」,「dict { }」と別の括弧マークで表します.
さて,それぞれの違いはなんでしょうか.以下の表を見てみましょう.
型 | 例 | ザックリした説明 |
list | [1, 2, 3], [‘apple’, ‘banana’], [1, ‘A’] | 複数のデータを格納できる.要素の挿入や削除ができる. |
tuple | (1,2,3), (‘apple’, ‘banana’), (1, ‘A’) | 複数のデータを格納できる.要素の書き換えができない. |
dict | {‘key1’: 1, ‘key2’: 2}, {‘Japan’: ‘Tokyo’, ‘UK’: ‘London’} | キーと値のペアとして複数のデータを格納する. |
リストとタプルは非常に似ていますが,違いは要素の書き換えができるかどうかです.
List型について
リスト型のデータは以下のコードのようにリストの最後に別の値を追加したり,特定の要素を置き換えたりすることができます.リストの0から数えてn番目の要素には「list[n]」とすることでアクセスすることができます.わかりづらかったらコードを見てみましょう
## list l1 = [1, 2, 3] l1.append(4)## l1の一番後ろに4を追加する print(l1) l1[2] = 100## l1の2番目(0から数えて)の要素を100に置き換える print(l1) ''' 出力結果: [1, 2, 3, 4] [1, 2, 100, 4] '''
注意したいのは,Pythonを含め多くのプログラミング言語では,要素の番号を数えるときに0, 1, 2, 3…のように0から数えます.なので以下のコードを見ればわかるとおり,「l1[2] = 100」では0から数えて2番目(すなわち1から数えれば3番目)の要素である3が100に置き換わっているのがわかると思います.これは慣れるまではわかりづらいかもしれませんが,よくわからない人は手を動かしてみて慣れてください.
以下,リストの基本的な操作をまとめました.
リスト.append(新しい要素):リストに新しい要素を追加
リスト.remove(要素):リストから指定した要素を削除
len(リスト):リストの要素数を数える
下のコード例もどうぞ.
li2 = [0, 1, 2] print(2)# 0から数えて2番目の要素にアクセス li2.append(3)# 新しい要素3を追加 print(li2) li2.remove(1)# リストから1を削除 print(li2) print(len(li2))# len( )でリストの要素数を数える ''' 出力結果: 2 [0, 1, 2, 3] [0, 2, 3] 3 '''
Tuple型について
一方でTuple型のデータは上でやったような他の要素を追加したり,特定の要素の値を置き換えることはできません.試しにタプルについて同じコードを書いてみてください.エラーが出てしまうはずです.
Dict型について
さてDict型の変数はListとTuple型のデータとは少し違い,値を「キー」と「バリュー」のペアで保存します.
ちなみに「dict」は「dictionary(辞書)」の略です.辞書では単語とその単語の意味がセットになっているように,dict型のデータはキーとバリューがセットになっているのです.
以下のコードではそれぞれ’apple’, ‘banana’, ‘peach’がキーとなっており,それに対応するバリューがその果物の色になっております.
## dict d1 = {'apple':'red', 'banana':'yellow', 'peach':'pink'} print(d1['apple']) print(d1['banana']) # print(d1['pink'])## error ''' 出力結果: red yellow '''
上のコードのようにDict型の変数にキーを与えるとそれに対応するバリューを得ることができます.上の例では’apple’と’banana’に関して’red’, ‘yellow’が出力されます.
ここで気を付けなければならないのは,キー→バリューの流れであり,バリュー→キーとはならないことです.
上のコードの一番下にコメントアウトしてある「print(d1[‘pink’])」はキーではなくバリューを渡していますが,これではエラーが出てしまいます.
確認クイズ
クイズ1
以下のコードで出力される値を考えてみてください.考えたら実際にコードを書いてみて当たっているか確認してみましょう.
li = [3, 1, 4] print(li[1]) li.append(5) print(li) li.remove(4) print(li)
クイズ2
以下の2つのコードを実行しようとするとどちらともエラーが出ます.
どこでエラーが発生しているでしょう?
x = (1, 2, 3) y = [1, 3, 4] y.append(4) x.append(2)
d1 = {'key1': 1, 'key2': 2, 'key3': 'three'} d1['key1'] d1['three']
次回
次回は「条件分岐:if-else文と比較演算子,論理演算子」について学習します.
次の記事はこちら.
機械学習のためにしっかりとPythonを勉強したいなら,ある程度の基礎を身に着けた後に下の本を読むのがお勧めです.この本をこなせば,より高いレベルへ到達できるでしょう.