第2回 リスト

本題に入る前に必ず連絡の動画を見てください。
Google Colabへのリンク

1. リストの作成と要素の表示

概要

動画の解説を参照

これまでに出てきた変数にはひとつの値しか入れられませんが、リストでは複数の値をまとめて入れられます。
例えば
days = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日']
を実行すると、7つの要素をもつ文字列型のリスト days が作られます。

それぞれの要素と値は次のようになります。
インデックス ( [ ] の中に入る数字) が 0 から始まることに注意してください。
要素 days[0] days[1] days[2] days[3] days[4] days[5] days[6]
月曜日 火曜日 水曜日 木曜日 金曜日 土曜日 日曜日
そのため、以下のコードを実行すると表示結果はこのようになります。

同様に、整数型のリストを作ることもできます。
この例のリスト名「prime_numbers」は素数を意味する英語「prime number」に基づいたものです。
Pythonでは、複数の単語を組み合わせた変数はこのように「_」(アンダーバー) でつないで表すのが一般的です。

また、型の異なる要素を混在させることもできます。

課題1

俳句の上の句、中の句、下の句を格納した配列 haiku を作り、句の間に全角スペースを1つ入れて1行で表示するコードを書いてください。
(俳句はオリジナル・既存のもののどちらでも構いません)
(参考 : 芭蕉発句全集)

2. 要素の値の変更

動画の解説を参照

普通の変数では、最初に作ったときだけではなく任意のタイミングで代入を行うことができます。
例えばこのようにすれば、最初につくられたときは 5 だった値を 3 に書き換えられます。

配列の要素も同様にして値を書き替えられます。
インデックスの範囲
配列の要素を表示したり書き換えたりするときは、インデックスの範囲に注意が必要です。
上の例だと days の要素は 12個なので、インデックスの範囲は 0~11です。
「days[12]」は存在しないので、このようなコードはエラーになります。

課題2

自分の氏名を1文字ずつ格納したリスト name を作り、先頭の文字を表示させたあとその要素を別のものに書き換え、再び表示させるコードを書いてください。

3. 2次元リスト

動画の解説を参照

リストを2重構造にすることもできます。以下のコード

の chracters は、
['あ', 'い', 'う', 'え', 'お']
['か', 'き', 'く', 'け', 'こ']
['さ', 'し', 'す', 'せ', 'そ']
を 0, 1, 2 番目の要素とするリストです。
chracters[1] が
['か', 'き', 'く', 'け', 'こ']
なので、chracters[1][3] はその 3番目、つまり
'け'
になります。このように、縦と横の2つのインデックスで要素を指定します。
characters の1つ目 (左側) のインデックスの有効範囲は 0~2, 2つ目 (右側) のインデックスの有効範囲は 0~4 です。
不揃いの2次元リスト
要素数の異なるリストを要素とするリストを作ることもできます。
このようなリスト data では、data[0], data[1], data[2] の要素数はそれぞれ 5, 3, 4個になります。
3次元リスト
2次元リストを要素とするリストを作ることもできます。そのようなリストを3次元リストといいます。
このようなリスト three を作ると、three[0], three[1], three[2] がそれぞれ2次元リストになります。
その要素は1次元リスト (普通のリスト) で、例えば three[1][0]は
['g', 'h', 'i']
になります。そのため、「1番目の0番目の2番目」で 'i' という文字列が取り出されます。

課題3

自分の姓のローマ字を1文字ずつ格納したリストを0番目の要素、名のローマ字を1文字ずつ格納したリストを1番目の要素とした2次元リスト full_name を作り、そのうちの異なる2文字を表示させるコードを書いてください。

提出

今回作成したノートブックを「plang2024a@gmail.com」と共有してください。
※ 課題の再提出の際は、ノートブックの再度の共有はせずにチャットで連絡してください。