見出し画像

Python言語によるプログラミングイントロダクション(5)

 Python言語によるプログラミングイントロダクション第2版ーデータサイエンスとアプリケーション(著者:Jhon V. Guttag 監訳:久保幹雄)を読んだ学習を記録していきます。そのため、詳しい内容を学習したい場合は本を購入していただくことをお勧めいたします。また、解釈や理解が間違えである場合も多々あるかと思います、、、

第5章 構造型、可変性と高階関数(p63~80)

5.1 タプル
 タプルは文字列のように不変な要素を順番に並べたものである。個々の要素の型はどんな方でも良い。タプルは順序型であり、順序型の変数の場合は多重代入が可能である。

# tuple型
x = (1, 'abc', 1.23)

5.2 範囲
 文字列やタプルと同様に範囲は不変である。for文でよく利用される型でああり、start,stop,stepで範囲を指定する。

5.3 リストと可変性
 リストはタプルのように値を順番に並べたもので、各要素の値は添字付されている。

# list型
L = [1, 'qwer', 1.2]

 リストは可変であり、タプルは不変であることが重要な点の1つである。リストは可変であるが故に、使い勝手がよく感じるが、想定外のエラーを引き起こす原因の1つになり得る。例えば、for文で処理している間にリストの値が変わってしまった場合に、添字との対応が変わってしまい、想定していた結果と異なる結果が帰ってくる場合がある。そのため、クローンを作って処理する方法がある。

# クローンを作ってのfor文処理
for e in L[:]
    code...

 また、リストではリスト内包と言う演算した値を順序型でリストにすることが可能である。

5.4 オブジェクトとしての関数
 Pthonでは関数は第1級オブジェクトである。それは、intfloatなどと同様に扱うことができることを表す。例えば、関数を引数とする高階プログラミングが可能になる。lambda式をを利用することで、匿名の関数を作成することが可能になる。

5.5 文字列、タプル、範囲とリスト
 str,tuple,range,listは全て順序型のオブジェクトになる。tuplelistは似ているが可変性の違いがある。strは文字、rangeは整数に特化した順序型になっている。プログラムの目的に合わせて、オブジェクトの型を活用することが必要になる。

5.6 辞書
 辞書の型はキーを添字とする点以外はリストに似ている。辞書はリストと同様に可変である。多くのプログラミング言語はキーから値への紐付けを提供するビルトイン型を持っていない。ビルトイン型は検索をする際に処理を高速化する。これは、ハッシュという技術を利用しているようだ。キーは順序付されてはいない。Pythonの全ての組込み不変型はハッシュ可能である。

重要語句
構造型、高階関数、タプル、順序型、多重代入、オブジェクト同一性、エイリアシング、リスト内包、高階プログラミング、lambda式、ビルトイン型、ハッシュ

この記事が気に入ったらサポートをしてみませんか?