目的
Pythonでは,様々なオブジェクトをシーケンス(連続したもの)として表現できる.ここでは,リストを使用し,数値データや文字列データをシーケンスとして扱う方法を学ぶ.
説明
リストを作成する
整数値データのみからなるリストを作成してみよう.例えば英語・数学・国語のテストの点数からなるリストを作成し,scoresという名前をつける場合は以下のようにすればよい.
文字列データのみからなるリストも同様に作成できる.例えば月曜から金曜までのリストを作成し,weekdaysという名前をつける場合は以下のようにすればよい.
整数値,浮動小数点数,文字列が混在したデータのリストも作成できる.例えば,名前・年齢・身長・趣味・血液型からなるリストを作成し,introductionという名前をつける場合は以下のようにすればよい.
リストのリストも作成できる.例えば,名前・右目と左目の視力のリストからなるリストを作成し,visionという名前をつける場合は以下のようにすればよい.
リストの末尾に要素を追加する
リストの末尾に要素を追加するには,appendメソッドを使用する(メソッドについては後の単元で説明する).例えば,空のリストを作成し,英語・数学・国語のテストの点数からなるリストを作成するには,以下のようにすればよい.
リストの要素を参照する
リストの各要素の値を参照するには,リスト名の後ろに[]で囲んでインデックス番号を指定すればよい.例えば,weekdaysの最初2つ(0番目と1番目)の要素の値を参照するには,以下のようにすればよい.
weekdaysには要素が5つ(インデックス番号0から4)しかないため,5番目以降の要素の値を参照しようとすると「IndexError: list index out of range」というエラーメッセージが表示される.
負のインデックス番号を指定すると,末尾から逆順に要素の値を参照することができる.
リストの要素を書き換える
代入文の左辺にリストの要素を記述すると,リストの要素の値を書き換えることができる.
リストの一部を取り出す
スライスを使用してインデックス番号の範囲を指定すると,リストの一部を取り出すことができる.インデックス番号の範囲は「[start:end]」と記述し,先頭インデックス番号startから末尾インデックス番号endの1つ前までの範囲を指定することができる.例えば,月曜から日曜までのリストから平日のリストを取り出すには,以下のようにすればよい.
startとendは省略することができ,省略した場合はそれぞれ「最初から」「最後まで」という意味になる.
スライスでは「[start:end:step]」のように,範囲に加えていくつ毎にリストの一部を取り出すかを表すstepを指定することができる.例えば月水金曜日を取り出すには,以下のようにすればよい.
stepは省略することができ,省略した場合,stepは1となる.
インデックス番号に負の数を指定すると末尾から逆順に値が参照できたことから,以下のようにすれば,週末を逆順に,月水金曜日を逆順に取り出すこともできる.
リストをアンパックする
例えば,英語・数学・国語のテストの点数からなるリストを代入文の右辺に,3つの変数をカンマ区切りで左辺に記述すると,リストの各要素に名前をつけることができる.これをリストのアンパックと呼ぶ.
課題
課題0
英語・数学・国語の試験の点数からなるリストを作成せよ.
課題1
英語・数学・国語の試験の点数からなるリストを作成し,理科と社会の点数を追加せよ.
課題2
英語・数学・国語・理科・社会の試験の点数からなるリストを作成し,数学の点数を表示させよ.
課題3
英語・数学・国語・理科・社会の試験の点数からなるリストを作成し,国語の点数を変更せよ.
課題4
英語・数学・国語・理科・社会の試験の点数からなるリストを作成し,理科の点数を物理の点数と化学の点数のリストに変更せよ.
課題5
月曜から日曜のリストを作成し,週末(土日)のリストを取り出せ.
課題6
月曜から日曜のリストを作成し,火木土曜日のリストを取り出せ.
課題7
1月から12月のリストを作成し,奇数月のリストを取り出せ.
課題8
1月から12月のリストを作成し,春の月のリストを取り出せ.
課題9
1月から12月のリストを作成し,夏の月のリストを逆順で取り出せ.