タプル・辞書・集合

目的

前回は様々なオブジェクトをシーケンスとして表現できるリストについて学んだ.Pythonには様々なオブジェクトをまとめて表現できるものとして,リストの他にタプル・辞書・集合がある.ここではタプル・辞書・集合の使い方を学ぶ.

説明

タプル

リストは様々なオブジェクトをシーケンスとして表現できるものであった.タプルも様々なオブジェクトをシーケンスとして表現できるものである.両者の違いは,リストがミュータブルである(要素を変更できる)のに対してタプルはイミュータブルである(要素を変更できない)ことである.

タプルを作成する

名前・年齢・身長・趣味・血液型からなるタプルを作成し,introductionという名前をつける場合は以下のようにすればよい.

タプルの要素を参照する

タプルの要素の参照の仕方はリストと同じである.

タプルの一部を取り出す

スライスを使用してタプルの一部を取り出す方法もリストと同じである.

タプルをアンパックする

タプルをアンパックする方法もリストと同じである.

括弧の省略

要素の値をカンマで区切って大括弧で囲むとリストが,小括弧で囲むとタプルが作成できた.では,括弧を使わずに要素の値をカンマで区切るとどうなるか確認しよう.

以上から,括弧を省略するとタプルが作成されることがわかる.括弧の省略とタプルのアンパックを組み合わせると

のように,複数の代入文を1行で書くことができる.

タプルはイミュータブルであることを確認する

リストの場合は,空のリストを作成し,appendメソッドで要素を追加することができた.タプルはイミュータブルであるため,要素の追加はできない.

リストの場合は代入文で要素の値を変更することができた.タプルはイミュータブルであるため,要素の変更はできない.

辞書

リストとタプルは様々なオブジェクトをシーケンス(連続したもの)として表現し,インデックス番号で要素の値を参照した.辞書は様々なオブジェクトをまとめて表現するものであるが,シーケンスとして表現しない.そのため,インデックス番号で要素の値を参照する代わりに,個々の要素に一意なキーを割り当て,キーにより要素の値を参照する.キーには文字列が使用されることが多い.

辞書を作成する

辞書を作成するには,「{key0: value0, key1: value1, …}」のように,キー(key)と値(value)をカンマで区切って指定する.例えば,名前・年齢・身長からなる辞書を作成し,introductionという名前をつける場合は以下のようにすればよい.

辞書の要素を参照する

辞書の要素の値はキーを指定することで参照できる.

辞書の要素を書き換える

辞書はミュータブルであるため,代入文により要素の値を書き換えることができる.

辞書に要素を追加する

辞書に要素を追加するには,新しいキーを指定した代入文を使用すればよい.

集合

集合は値がなくキーだけの辞書のようなものである.辞書と同様にキーは一意でなければならない.

集合を作成する

例えば,小学校・中学校・高校・短期大学(専門学校)・大学からなる集合schoolsを作成するには以下のようにすればよい.

空の集合を作成する

辞書と集合はともに中括弧を使用して作成した.以下のようにすると空の辞書が作成される.

空の集合を作成するには以下のようにする必要がある.

集合に要素を追加する

集合に要素を追加するには以下のようにすればよい.

課題

課題0

月曜から日曜のタプルを作成し,平日のタプルを取り出せ.

課題1

1月から12月のタプルを作成し,秋の月のタプルを取り出せ.

課題2

英語・数学・国語の点数からなるタプルを作成し,理科の点数が追加できないことを確認せよ.

課題3

英語・数学・国語・理科・社会の点数からなるタプルを作成し,社会の点数が変更できないことを確認せよ.

課題4

名前・年齢・身長からなる辞書を作成せよ.

課題5

名前・年齢・身長からなる辞書を作成し,年齢を表示せよ.

課題6

名前・年齢・身長からなる辞書を作成し,身長を変更せよ.

課題7

名前・年齢・身長からなる辞書を作成し,趣味と血液型を追加せよ.

課題8

誕生日の星座の集合を作成せよ.

課題9

空の集合を作成し,干支を追加し,十二支の集合を作成せよ.