(抜書)Dive into Python3 第2章
ネイティブデータ型 - Dive Into Python 3 日本語版
浮動小数点数は小数第15位まで正確だ。
//演算子はひねくれた整数除算を行う。結果が正の数の場合は、整数への切り捨て(四捨五入ではない)とみなすことができるが、これについては注意が必要だ。 //演算子は常に整数を返すわけではない。分子や分母のどちらか一方でもfloatの場合は、なお結果を最も近い整数に丸めてくれるのだが、実際の戻り値はfloatで返される。 **演算子は「べき乗」を意味する。
分数について
分数を使うために、fractionsモジュールをインポートする。 分数を定義するには、Fractionオブジェクトを作って分子と分母を渡す。 分数をつかった普通の数学的演算ならなんでもできる。演算結果は新しいFractionオブジェクトとして返される。2 * (1/3) = (2/3) Fractionオブジェクトは自動的に約分される。(6/4) = (3/2)
リストについて
a_list[0] は a_list の最初の要素だ。
リストを定義したら、そのリストの任意の一部分を新しいリストとして取得できる。これはリストのスライスと呼ばれる。
スライスは、スライスインデックスの一方または両方が負の数でも動作する。これは次のように考えると良いかもしれない: リストを左から右へ読み、1つ目のスライスインデックスで欲しい最初の要素を指定し、2つ目のスライスインデックスは欲しくない最初の要素を指定する。戻り値はその間に含まれるすべてだ。
a_listを['a', 'b', 'mpilgrim', 'z', 'example']で定義したあと a_list[1:-1]の戻り値が['b', 'mpilgrim', 'z']となっているが、これは-1が’example’ということだろう。
両方のスライスインデックスが省略された場合は、リストのすべての要素が含まれる。しかし、これは元の a_list 変数とは異なる。これは、たまたますべて同じ要素を持った新しいリストなのだ。だから、a_list[:]はリストの完全なコピーを作るための簡易な方法として使える。
リストへの要素の追加
append()メソッドはリストの末尾に要素を1つ追加する
extend()メソッドは1つの引数としてリストをとり、引数として与えられたリストの各要素を元のリストへ追加する。 insert()メソッドは1つの要素をリストに挿入する。
リスト内検索
count()メソッドは指定された値がリストの中に何回出現するかを数える。
リストの中に特定の値があるかどうかを知りたいだけの場合は、count()メソッドよりもin演算子の方がわずかながら処理が早い。in演算子は、常にTrueまたはFalseを返す。リスト中にその値が何回現われるのかは教えてくれないのだ。
index()メソッドはリスト中で最初に出現したものだけを検出する。この例だと、'new'がリストの中に2回出現していて、a_list[2]とa_list[4]の2箇所に存在しているが、index()メソッドは1つ目のインデックスだけを返す。
リストの要素の削除
pop() method, del, etc.
タプル
タプルはイミュータブル(後述)なリストだ。いったん作成されたタプルは、どんな手段によっても変更できない。
リストと同様に、スライスすることもできる。リストをスライスすると新しいリストが得られるように、タプルをスライスすると新しいタプルが得られる。 新しいリストではなく新しいタプルなのね
タプルはリストに変換できるし、その逆もできる。組み込みのtuple()関数はリストを引数にとって、同じ要素を持ったタプルを返す。またlist()関数はタプルを引数にとってリストを返す。実質的には、tuple()はリストの凍結を行い、list()はタプルの解凍を行うと考えることができる。
リストから集合を作るには、set()関数を使えばよい
集合は順序づけされていない。
空の集合を作るには、set()を引数なしに呼び出せばいい。
集合は一意な値を詰めた袋だ。既にその集合に含まれている値を追加しようとしても、何も起こらない。例外も送出されない。本当に何も起こらないのだ。
is_it_true({False}) →出力結果:yes, it's true ちょっとおもしろい