
この回でできるようになること
- 01角かっこでリストを作り、位置番号で取り出す
- 02append() で追加し、スライスで一部を取り出す
- 03代入とコピーの違いを図で説明できる
ひとつの名前に、たくさんの値
リストは [ ] の中に値をコンマで並べます。文字列と同じく最初は0番です。

リンゴ、バナナ、みかん……全部別の変数だと大変だよ!

そこでリストなんだよ。fruit[0] と書けば、最初の果物を取り出せるね。

順番を決めてまとめると、後で繰り返し処理もしやすくなります。
fruit = ["リンゴ", "バナナ", "みかん"]
print(fruit[0])
print(fruit[1:3])
print(len(fruit))
なぜ? [1:3] は1番と2番。len(fruit) は要素の個数を数えます。

fruit[3] は存在しないのでエラー。位置は0〜2番だよ。
追加と変更を試そう
append() は末尾へ値を追加します。既存の値は位置番号を使って入れ替えられます。

おやつにブドウが増えた! もとのリストに追加できる?

できるよ。append() を使うと、いちばん後ろに新しい箱を増やせるんだ。

一方、fruit[1] = ... は2番目の中身を入れ替える操作ですね。
fruit = ["リンゴ", "バナナ"]
fruit.append("ブドウ")
fruit[1] = "みかん"
print(fruit)
なぜ? append() の後は3個。位置1のバナナだけをみかんに変更します。

remove() は値を指定して削除、pop() は位置を指定して取り出す操作だよ。
同じリスト? 別のリスト?
b = a は『新しいリストを作る』ではありません。a と b は同じリストを指します。

b だけ変えたのに a も変わった! こっそり手品した?

手品じゃないんだよ。名札を2枚、同じ箱に付けたからなんだ。別の箱が欲しいなら copy() を使おう。

a.copy() なら、外側のリストを別に作れるのですね。
a = [1, 2]
b = a
b[0] = 9
print(a)
c = a.copy()
c[0] = 7
print(a, c)
なぜ? b と a は同じリストを参照。c は浅いコピーなので、この例のように整数だけなら変更が分かれます。入れ子のリストでは内側は共有される点に注意。

入れ子のリストまで独立させたいときは、後で deepcopy を調べよう。
予想して、理由まで確かめよう
答えを選んだら、説明を読んでから実行欄でも試してみよう。
items = ["赤", "青"] に items.append("黄") を実行した後、items[2] は?
答えを選ぶと理由が表示されます。

小さな練習:買い物リストを更新しよう
['リンゴ', 'バナナ'] に『みかん』を追加し、バナナを『ブドウ』へ変えて表示しよう。
ヒント:append() で末尾へ追加、[1] で2番目を変更します。
解き方の一例と理由を見る
items = ["リンゴ", "バナナ"]
items.append("みかん")
items[1] = "ブドウ"
print(items)結果は ['リンゴ', 'ブドウ', 'みかん']。追加と変更を別々に確かめましょう。
センサー記録もリストになる

温度を1回ずつ記録したら、あとで変化を比べられるね!

そうなんだよ。ただし、いつ測った値かも大切。温度だけでなく時刻も一緒に残すと、後から理由を考えやすいね。

測定間隔が違う記録を比べる際にも、時刻が必要ですね。
自分の手で動かそう
例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。
書き換えて試せます。Tabキーは半角スペース4つ分です。
先頭は0番。スライスは終わりの位置を含みません。
この入力欄の使い方
コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。
準備できました。
実行結果
実行すると、ここに結果を表示します。
Pythonは閲覧中の端末内で動作します。

データが増えても、ひとつずつ迷わない。 今日覚えた道具を、別の値でも試してみよう。自分で理由を説明できたら、とてもいい進歩なんだよ。