bs.fukufuki

bookshelf of fukufuki 留学、英語、物語、よしなしごと

(抜書)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 ちょっとおもしろい