福岡県だけどPythonを勉強する!

他言語を積極的に推奨する福岡県でPythonを勉強していく記録。

制御構文 - 比較演算子

ここ数日、PHPで上手くいかない事が何件かあって勉強があまり進みませんでした。

しょせん最下層ぺちぱーですから・・・。

 

前回から記事を節ごとに書く事にしました。

その方が後から見直す時に楽だからです。

 

以下、今回の備忘録です。

 

●4章 制御構文

■■比較演算子

 

比較演算子は < と >で値の大小を比較する。

ifやwhileなどのループで条件などに使う。

 

>>> 1 > 0

True

>>> 1 > 1

False

>>> 1.0 > 1

False

>>> 1 > 1.0

False

>>> 'b' > 'a'

True

 

大小の比較

・数値・・・数学的に比較し大小を判断。

・bytes・・・辞書順に比較し大小を判断。

・文字列・・・各文字をordし、順に比較し大小を判断。

※ord 文字に該当するアスキーコードを調べる。

 

>>> x = "あいう"

>>> y = "かきく"

>>> z = "あいあ"

>>> x < y

True

>>> x > z

True

 

・リスト・・・各要素を順に比較し要素について大小を判断。

素数が違う場合は存在する要素だけで判断。

>>> a = [1,2,3]

>>> b = [4,5,6]

>>> c = [4,5]

>>> d = [7]

>>> a < b

True

>>> a < c

True

 

dの要素数は1個だが、aの各要素(1、2、3)より7の方が大きい。

>>> a < d

True

 

要素が同じものなら要素数の多い方が大きい。

>>> e = [1,2,3,3]

>>> a < e

True

 

比較演算子は以下のように書ける。

>>> 0 < 1 < 2 < 3

True

 

同時に複数の比較演算が行えるので

人間の考える通りに書ける。

>>> def get_one():

...     print('get_one')

...     return 1

... 

>>> def get_two():

...     print('get_two')

...     return 2

... 

>>> def get_three():

...     print('get_three')

...     return 3

... 

>>> get_one() < get_two() < get_three()

get_one

get_two

three

True

 

>>> get_one() < get_two() and get_two() < get_three()

get_one

get_two

get_two

three

True

 

■等価

等価をテストするオペレータは ==

オブジェクトが同じ値であると言える時に「等価」と言う。

 

文字列・・・同じ文字列

数値・・・同じ値であれば等価

リスト・タプル・・・順序と値が等価であれば等価

map型(辞書)・・・キーと値のセットが全て同じなら等価

>>> "hoge" == "hoge"

True

>>> "hoge" == "hage"

False

>>> 1 == 1

True

>>> [1, 2, 3] == [1, 2, 3]

True

 

オブジェクトの型が違えば等価にはならない。

>>> 1 == "1"

False

>>> 0 == None

False

>>> False == None

False

 

数値同士なら整数と浮動小数点数で等価になる。

>>> 1.0 == 1

True

 

等価なオブジェクトが同一のオブジェクトとは限らない。

>>> x = [1,2,3]

>>> y = [1,2,3]

>>> x == y

True

>>> id(x)

140269941996000

>>> id(y)

140269941996432

 

■オブジェクトID

オブジェクトのID(Identity)・・・インタプリタがオブジェクトを管理する為のID。

インタプリタ・・・プログラムを実行するソフトウェア。

 

isキーワードは2つのオブジェクトが完全に同一かを確認出来る。

>>> x = [1,2,3]

>>> y = [1,2,3]

>>> x is y

False

 

※シングルトン・・・単体。一つしか生成しないということを保証する。

 

文字列・数値などのイミュータブル(変更不可)な型の場合はシングルトンでオブジェクトを生成する。

>>> x = "hoge"

>>> y = "hoge"

>>> x is y

True

>>> "hoge" is "hoge"

True

>>> 1 is 1

True

 

Noneもシングルトンで生成される。

>>> None is None

True

>>> False is False

True

>>> True is True

True

 

TrueやFalseもシングルトン。

 

 

いよいよ次からループ処理の勉強に入ります。

ちょっと嬉しいです。

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)