くり返しとデータの持ち方

INPUT · スライド

個数を数える

01 / 06

何個あるか知りたい

append で足したり pop で消したりしていると、いま何個あるのか分からなくなる。

for で1つずつ数えることもできるけれど、そのために4行も書くのはもったいない。Pythonには数えるための道具が用意されているよ。

02 / 06

len で数える

len(レン。length =長さの略)のカッコにリストを渡すと、入っている個数が返ってくる。

print と同じように、カッコの中に渡して呼ぶ形だね。

kudamonos = ["りんご", "みかん", "ぶどう"]print(len(kudamonos))

実行結果

3

03 / 06

空のリストは0

何も入っていないリストの長さは 0。エラーにはならないよ。

だから if len(kudamonos) == 0: と書けば、「1件も無いとき」を見分けられる。データが空のときの表示を変える、というのは実際のアプリでよくある仕事だよ。

kudamonos = []print(len(kudamonos))if len(kudamonos) == 0:    print("からっぽ")

実行結果

0
からっぽ

04 / 06

最後の番号は len より1つ小さい

3つ入っているリストの番号は 0 1 2。つまり 最後の番号は len から1を引いた数だよ。

ここを取りちがえると IndexError になる。個数と最後の番号は必ず1ずれると、口に出して覚えてしまおう。

kudamonos = ["りんご", "みかん", "ぶどう"]print(len(kudamonos))print(kudamonos[len(kudamonos) - 1])

実行結果

3
ぶどう

05 / 06

range(len(xs)) で番号を回す

len と range を組み合わせると、番号のほうをくり返せる。

range(3) が 0 1 2 を出すことを思い出そう。range(len(kudamonos)) なら、そのリストの番号がちょうど全部出てくるんだ。

中身だけ欲しいなら素直に for kudamono in kudamonos: でいい。番号そのものを使いたいときにこの形を選ぶよ。

kudamonos = ["りんご", "みかん", "ぶどう"]for i in range(len(kudamonos)):    print(i, kudamonos[i])

実行結果

0 りんご
1 みかん
2 ぶどう

06 / 06

len は文字にも効く

実は len はリスト専用ではない。文字を渡すと文字数を返してくれる。

Pythonは「並んでいるもの」を同じ道具で扱えるように作られている。リストで覚えたことが文字にも効く——この気づきが、次のグループのテーマだよ。

print(len("こんにちは"))print(len(["りんご", "みかん"]))

実行結果

5
2