PYTHON はじめの一歩 / LESSON 05

リストでまとめて管理。

果物の種類が増えても、変数を何十個も作る必要はありません。リストを使って、順番のあるデータをまとめよう。

学びを始める

データが増えても、ひとつずつ迷わない。 | 動画なしでも学べます

リストでまとめて管理。をあおい・はる・AI先生・ROBORONと考えるイラスト
データが増えても、ひとつずつ迷わない。
GOAL

この回でできるようになること

  • 01角かっこでリストを作り、位置番号で取り出す
  • 02append() で追加し、スライスで一部を取り出す
  • 03代入とコピーの違いを図で説明できる
ことばの窓
01 / EXPLORE

ひとつの名前に、たくさんの値

リストは [ ] の中に値をコンマで並べます。文字列と同じく最初は0番です。

あおい

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

AI先生

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

はる

順番を決めてまとめると、後で繰り返し処理もしやすくなります。

実際のコードまず結果を予想してみよう
fruit = ["リンゴ", "バナナ", "みかん"]
print(fruit[0])
print(fruit[1:3])
print(len(fruit))
実行するとリンゴ / ['バナナ', 'みかん'] / 3

なぜ? [1:3] は1番と2番。len(fruit) は要素の個数を数えます。

目で見てわかるひとつの名前に、たくさんの値
図5-1 リストの箱にはそれぞれ位置番号があります。
図5-1 リストの箱にはそれぞれ位置番号があります。
ROBORONのチェック!

fruit[3] は存在しないのでエラー。位置は0〜2番だよ。

02 / EXPLORE

追加と変更を試そう

append() は末尾へ値を追加します。既存の値は位置番号を使って入れ替えられます。

あおい

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

AI先生

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

はる

一方、fruit[1] = ... は2番目の中身を入れ替える操作ですね。

実際のコードまず結果を予想してみよう
fruit = ["リンゴ", "バナナ"]
fruit.append("ブドウ")
fruit[1] = "みかん"
print(fruit)
実行すると['リンゴ', 'みかん', 'ブドウ']

なぜ? append() の後は3個。位置1のバナナだけをみかんに変更します。

目で見てわかる追加と変更を試そう
図5-2 追加と変更は別の操作です。
図5-2 追加と変更は別の操作です。
ROBORONのチェック!

remove() は値を指定して削除、pop() は位置を指定して取り出す操作だよ。

03 / EXPLORE

同じリスト? 別のリスト?

b = a は『新しいリストを作る』ではありません。a と b は同じリストを指します。

あおい

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

AI先生

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

はる

a.copy() なら、外側のリストを別に作れるのですね。

実際のコードまず結果を予想してみよう
a = [1, 2]
b = a
b[0] = 9
print(a)
c = a.copy()
c[0] = 7
print(a, c)
実行すると[9, 2] / [9, 2] [7, 2]

なぜ? b と a は同じリストを参照。c は浅いコピーなので、この例のように整数だけなら変更が分かれます。入れ子のリストでは内側は共有される点に注意。

目で見てわかる同じリスト? 別のリスト?
図5-3 名札が2枚あることと、箱が2個あることは違います。
図5-3 名札が2枚あることと、箱が2個あることは違います。
ROBORONのチェック!

入れ子のリストまで独立させたいときは、後で deepcopy を調べよう。

04 / YOUR TURN

予想して、理由まで確かめよう

答えを選んだら、説明を読んでから実行欄でも試してみよう。

チャレンジどれになるかな?

items = ["赤", "青"] に items.append("黄") を実行した後、items[2] は?

答えを選ぶと理由が表示されます。

PUT IT TOGETHER

小さな練習:買い物リストを更新しよう

['リンゴ', 'バナナ'] に『みかん』を追加し、バナナを『ブドウ』へ変えて表示しよう。

ヒント:append() で末尾へ追加、[1] で2番目を変更します。

解き方の一例と理由を見る
items = ["リンゴ", "バナナ"]
items.append("みかん")
items[1] = "ブドウ"
print(items)

結果は ['リンゴ', 'ブドウ', 'みかん']。追加と変更を別々に確かめましょう。

COFFEE BREAK

センサー記録もリストになる

あおい

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

AI先生

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

はる

測定間隔が違う記録を比べる際にも、時刻が必要ですね。

05 / RUN PYTHON

自分の手で動かそう

例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。

例題を選ぶ

書き換えて試せます。Tabキーは半角スペース4つ分です。

先頭は0番。スライスは終わりの位置を含みません。

この入力欄の使い方

コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。

準備できました。

実行結果

実行すると、ここに結果を表示します。

Pythonは閲覧中の端末内で動作します。

AI先生からひとこと

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