Python学習【365日チャレンジ!】19日目のマスターU(@Udemy11)です。

今日は、TimeCupsulが不調で、TimeMachineでバックアップが取れなくなっているので、なんとかうまくできる方法がないかとWin機にHDDをつなげたりしているとあっという間に時間が経ってしまい、最終的にはNASに対応したネットワーク型のHDDを購入するしかないかなと諦めかけています。

とりあえず、外付けHDDをNAS化できるアダプタがあるようなので、それを試してみようかと思っています。

それでは、今日もPythonを学習していきます。

昨日の復習

昨日は、実際のListの使い方のイメージを学習しました。

>>> s = []
>>> min = 0
>>> max = 4
>>> s.append('p')
>>> min >= len(s) > max
True
>>> s.append('p')
>>> s.append('p')
>>> s.append('p')
>>> min <= len(s) < max
False
>>> len(s)
4

乗客0人の車(s)を用意して、順番に人(p)を乗せていき、乗れるかどうかを判断します。
定員(max)は4人なので、4人になった時点で、Falseが返されて、乗客数を調べると(len)乗客は4人という感じでした。

具体的なイメージとプログラムをどのように当てはめるかが重要です。
想像力を働かせて、求めるサービスがどのようにコードに置き換えられるか考えていかないといけません。

では、本日の内容は、タプル型です。

タプル型の基本

タプル型は、parenthesesの丸括弧で囲んで指定しますが、丸括弧で囲まなくても,(コンマ)を使うことで自動的にタプル型として認識されます。

>>> t = 1, 2, 3
>>> s = (1, 2, 3)
>>> type(t)
<class 'tuple'>
>>> type(s)
<class 'tuple'>

一つの値を代入するときでもコンマを入れるとタプル型になり、コンマを入れないと文字型になったりします。

>>> a = 1,
>>> b = 1,
>>> type(a)
<class 'int'>
>>> type(b)
<class 'tuple'>

また、タプル型は、リストと同様に、indexやcountのメソッドが使えたり、スライスで値を抽出したりできます。

>>> t = [1, 2, 3, 2, 2]
>>> t.index(2)
1
>>> t.count(2)
3
>>> t[0]
1
>>> t[0:2]
(1, 2)

ほぼ、リストと同じような使い方はできますが、sortで並べ替えはできません。
また、タプルの中の値を変更することもできません。

タプルは、読み込み専用の型であり、変更されては困る値を扱うときに使われます。

タプルにリストを入れることは可能

タブル単体であれば、中の値を変更することはできませんが、タプルの中に入れたリストの中身は変更することが可能です。

>>> t = ([1, 2, 3], [4, 5, 6])
>>> t
([1, 2, 3], [4, 5, 6])
>>> t[0][0] = 100
>>> t
([100, 2, 3], [4, 5, 6])

タプルの中に入っているindex値のリストの中のindex値を指定して変更しています。

数値型とよく間違えるポイント

タプルでよく間違えるのが、コンマを入れ忘れてタプル型以外に指定されてしまうパターンです。

タプルは値を変更できませんが、2つのタプルを足して新しいタプル型変数を作ることができます。
このときに、一つの値のタプルと複数の値のタプルを合わせるときにエラーが起こってしまうことがあります。

>>> n_tuple = (1, 2, 3) + (4, 5, 6)
>>> n_tuple
(1, 2, 3, 4, 5, 6)
>>> a_tuple = (1) + (4, 5, 6)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
>>> a_tuple = (1,) + (4, 5, 6)
>>> a_tuple
(1, 4, 5, 6)

ついつい、コンマを忘れると、数字とタプルをたせませんというエラーが起こります。
この場合は、最初の1のあとに,(コンマ)をつけるとうまくいきます。

やることでしか覚えられない

昨日はエビングハウスの忘却曲線を紹介しましたが、ほんと何度も繰り返さないとどんどん忘れていってしまいます。

酒井さんの講座も以前挫折したときは、このあたりまでは受講していたのですが、全くもって記憶の片隅にも残っていませんでした。
つまり、学習しても、しっかり復習しないと自分のものにはなりません。

しっかりと毎日Pythonのコードを書く時間を確保して、スキルを身につけないと!

ではでは、Good Python!