リストの具体的な使い方 Python

Python学習18日目で最近ちょっと睡眠不足気味のマスターU(@Udemy11)です。

夜にPythonの学習をして、Udemyfun.comで復習の記事を書いているので、寝る時間が遅くなって、若干睡眠不足を感じています。

たまに昼間に眠気が襲ってくるので、眠気を吹き飛ばす方法があれば教えて下さい。

そういえば、人間って学習したことをすぐに忘れるらしく、何度も復習することでしか記憶を定着させることができないそうです。

エビングハウスの忘却曲線

こちらのグラフは、ドイツの心理学者であるヘルマン・エビングハウス氏による【エビングハウスの忘却曲線】というものですが、被検者に意味のない音節を憶えてもらい、時間の経過による記憶の定着率の変化を表したグラフと定期的に復習した場合の記憶の定着率のグラフを合わせたグラフです。

実験によると

  • 20分後に42%忘れる
  • 1時間後に56%忘れる
  • 9時間後に64%忘れる
  • 1日後には67%忘れる
  • 2日後には72%忘れる
  • 6日後には75%忘れる
  • 31日後には79%忘れる

ということらしく、繰り返し同じことを学習することで、そのたびに記憶が呼び戻され、記憶が定着が図られて忘れにくくなることがわかっています。

復習の回数にもよりますが、2ヶ月後には記憶の定着率に大きな差が生まれています。

つまり、一度学習しただけでは、どんどん忘れてしまいますが、定期的に復習すれば、しっかりと頭の中に記憶として残していけるということです。

ほんと復習は大切ですね。

それでは、今日もしっかりと復習から入っていきます。

記事の内容は、酒井潤さんの講座を参考にさせていただき、学習した内容を紹介しています。
Pythonをひととおり学習したい人にはピッタリの講座で、値段も専門書1冊の値段よりも安く受講できるので、超おすすめの講座です。

Python入門 酒井さんの講座

昨日の復習

昨日はリストの値渡しと参照渡しを学習しました。
copy()メソッドを使って変数に値を渡す方法で、リストで先に定義された変数のコピーを新しい変数に代入し、違う値として扱う方法でした。

>>> a = [1, 2, 3, 4, 5]
>>> b = a.copy()
>>> b[0] = 100
>>> b
[100, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]

copy()の代わりに[:]を使っても値渡しができました。

>>> a = [1, 2, 3, 4, 5]
>>> b = a[:]
>>> b[0] = 100
>>> b
[100, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]

copy()や[:]を使わずに、そのまま変数を指定すると参照渡しになり、あとから指定した変数を変更することは最初に代入した変数を変更することになりました。

>>> a = [1, 2, 3, 4, 5]
>>> b = a
>>> b[0] = 100
>>> b
[100, 2, 3, 4, 5]
>>> a
[100, 2, 3, 4, 5]

idメソッドを使えば、2つの変数に振られたIDをチェックすることができます。
値渡しのときには違うIDが振られていて、参照渡しのときは同じIDが振られていましたね。

今日からは、もう少し具体的なリストの使い方を学習します。

4人乗りの車に乗れるかどうか?

イメージとしては、4人乗りの送迎用車に乗れるのかどうか判断するという使い方です。

まずは、リストを作成し、最小の数字と最大の数字を変数で定義します。

seat = []
min = 0
max = 4

これが4人乗りの車です。

それでは、この車に乗客を載せていきます。

append()で乗客を追加

乗客が乗るということは、作ったリストseatに値を入れるということです。
値は何でもいいのですが、人はpersonなので、【p】を入れたのち、まだ乗れるかどうか判断します。

seat.append('p')
print(min <= len(seat) < max) 
print(len(saat))

出力結果

True
1

1人乗っただけなので、Trueが返されて、乗客は1人という答えが帰ってきます。

さらに何人か乗客を乗せる

続いて、何人か乗客を乗せてみましょう。

seat.extend(['p', 'p'])
seat.append('p')
print(min <= len(seat) < max)
print(len(seat))

出力結果

False
4

extend()で2人載せて、更にappend()で1人乗ったので、乗客は4人になって、もう乗れませんという答え(False)が返されました。

乗客が降りる場合

次に乗客が降りる場合にpop()を使って、pを取り除きます。

seat.pop()
print(min <= len(seat) < max)
print(len(seat))

出力結果

True
3

乗客一人を取り除いたので、乗れる状態になり、再びTrueを返し、今車に乗っているのは3人ということになります。

どれだけイメージできるかが重要

プログラムのコードはあくまで文字を入力しているだけなので、それぞれの働きをどのようなイメージを持って使うかが重要になってきます。

リストを使って、乗客が乗り降りすることをイメージするなんて考えてこともありませんでした。

講座では、Uberにたとえて、タクシーで乗り降りするゲームといってましたが、まさにUberのシステムはこのような考え方を使って組み立てられているのがわかりました。

もちろん、Uberはもっと複雑なシステムなわけですが、このようなコードが組み合わせって出来上がっているということが少しイメージできたような気がします。

これから、より具体例が出てくるかと思うので、しっかりと復習を忘れずに学習に取り組もうと思います。

それでは、Good Python!