Python3 – 同値性と同一性

同値性

同値性に関しては、数値、文字列、オブジェクトに関わらず、そのコンテンツのパターンが同じならTrueとなる。

同一性

数値の同一性

一般的な予想

数値に関しては、同値性と同一性が同じ結果になると予想される。

予想外

整数で一定の範囲外の場合は、同一ではない(is not)と評価される。

多重代入の場合は同一と評価されるが、変数に対して演算を施すと同一ではなくなる。

同一性の変化は、演算に対して可逆的。

文字列の同一性

 

Python3 – 変数・式・演算

変数

変数の定義

変数は定義した時点で作成される。型指定や宣言のためのキーワードはなく、変数確保のためには何らかの値で初期化する。

内容の書き換え

変数の内容は、異なる型のもので任意に置き換え可能。

演算子

代数演算子

加減算(+/-)、乗算は一般的だが。除算系は以下に注意。

除算系

整数同士の除算は浮動小数点数となる。Python2から扱いが変更。

//演算子は商が整数となる除算、%演算子は剰余を返す。

// 切り捨て除算
% 剰余

詳しくは整数除算を参照。

べき乗

ビット演算子

~a ビット反転
a & b AND:論理積
a | b OR:論理和
a ^ b XOR:排他的論理和
a << n nビット左シフト
a >> n nビット右シフト

代入演算子

+=、-=、*=など。

インクリメント(++)/デクリメント(–)演算子はない。

比較演算子

同値性

==、!=、<、>、<=、>=は標準的。

同一性・包含

a is b aとbが同一である
a is not b aとbが同一でない
a in b aがbに含まれる
a not in b aがbに含まれない

比較演算子については「同値性と同一性」についても参照。

ブール演算子

a and b aもbもTrueのときTrue、それ以外はFalse
a or b aかbがTrueのときTrue、aもbもFalseのときFalse
not a aの否定

条件演算(3項演算子)

以下の式は、conditionが真であればtを、偽であればfを返す。

文字列演算子

a + b 文字列aと文字列bを連結
a * n 文字列aをn回繰り返す
a[n] n番目の文字を取り出す(0文字目からカウント)
a[n:m] n~m-1番目までの文字列を取り出す
a[n:] n番目以降の文字列を取り出す
a[:m] 先頭からm-1番目までの文字列を取り出す
a[n:m:s] n~m-1番目の文字列をs個飛ばしで取り出す

Python3 – 辞書

リテラル

辞書(dictionary)の要素はキーと値のセットで保持される。辞書の要素はリストのような順序を持たない(さらに言えば、このコードを実行するごとに表示される順番が変わる)。

キーや値の型は混在しても構わない。

キーについて

キーに使える型は、数値、文字列、タプルなど内容を変更できない型。

数値や文字を格納した変数をキーに指定すると、変数の内容がキーになる。

既存のキーに新たな要素を定義しようとすると、[最後に指定したキー]:[値]のペアになる(1つのキーには1つの値しか格納されない)。

リストやリストを含む変数、タプルをキーに使うとTypeErrorとなる。

内容の取得

要素数

辞書が持っている要素の数はlen()関数で得られる。

全てのキー・値・要素

辞書内の全てのキー、値、要素は、それぞれkeys()values()items()で取得。結果はdict_keysdict_valuesdict_itemsオブジェクトで得られ、list()関数でリスト化が可能。

要素の操作

要素の参照、追加

値の参照はキーを指定して行う。存在しないキーを指定して参照するとKeyError。

要素の追加は、新たなキーを指定して値を代入。

既存のキーを指定して、その内容を更新。

要素の削除

del文/del()関数

del文/del()関数はキーを指定して要素を削除する。

pop()メソッド

pop()メソッドは、引数で指定した要素を削除し、そのオブジェクトを返す。第2引数を指定した場合、キーが存在しないときに第2引数を返す。

clear()メソッド

clear()メソッドは辞書をすべてクリアする。

存在確認

キーの存在確認

辞書が指定したキーを持つかどうかをチェックするにはin演算子を使う。直接辞書に適用してもkeys()に適用しても結果は同じ。Python3ではhas_key()メソッドはなくなった。

値の存在確認

辞書が指定した値を持つかどうかは、in演算子にvalues()を適用

辞書オブジェクトの操作

辞書同士の連結

update()メソッドで他の辞書を連結できる。この操作は、元の辞書の内容を更新する。

ただし元の辞書と追加する辞書で重複するキーがあった場合は、追加する方の辞書の要素で上書きされる。

複数の値を持つ辞書

通常は重複したキーに値を登録すると、最後に登録した値で上書きされて1つしか残らないが、値をリストにすることで、同じキーに複数の値をもたせることができる。

 

Python3 – 内包表記

基本形

リスト/タプルからの要素の取り出し

リスト/タプルの要素を順に取り出したリストを返す。

range()を使ったリストの生成

要素の演算

要素に対して順次同じ演算を施す。

floatの要素

小数部分を持った数値を要素とする方法。

ifの使用

抽出する要素の条件の指定

後置if文で要素が条件に合致した場合のみ値に送ることができる。ただしelseは使えない。

抽出した要素の条件による値の選択

値を三項演算子にすることで、取り出された要素の条件によって値を変えることができる。

複数のループ

複数リストの同時ループ

複数のリストを同時に回すときは、2つの変数に対応するリストにzip()を使う。

多重ループ

多重ループの以下の2つの違いを押さえておく。

まず2つのforを連続させた場合。

次にforを[]で囲んだ場合。

 

入れ子のコレクションへのアクセス

入れ子になったリストなどの要素へのアクセスは、一時変数を使って多重ループ。

多重配列の作成

多重配列の作成は、内側の要素から考えていくとわかりやすい。

内包表記ではないが、以下の記法でも同じ結果を得る。

応用

要素数が増減する多重配列

要素数が順次増減する配列の例。内側のリストの終値=長さを変数として、その変数を外側のループで回している。

2つのリストの交互結合

2つのリストの要素を交互に結合する。たとえば[1, 3, 5]と[2, 4, 6]から[1, 2, 3, 4, 5, 6]を生成。

  1. 各リストから1つずつ要素を取り出し、それらを要素とするリストを作成
    • [[x, y] for x, y in zip([1, 3, 5], [2, 4, 6])]
      -> [[1, 2], [3, 4], [5, 6]]
  2. その結果から各要素リストをsublistとして取り出す
  3. 各サブリストから順次要素を取り出して、全体リストの要素とする

 

 

Python3 – リストとタプル

リスト

リストの初期化

リストとタプルの表現

[…]でリスト(list)を、(…)でタプル(tuple)を記述する。リストは要素の変更が可能だが、タプルは変更できない。

要素を改行して記述可能で、最後の要素のカンマ(,)は付けても付けなくてもよい。

型の異なる要素を混在させてよい。

要素が一つだけのタプルは、要素の後にカンマ(‘)を付ける必要がある。

入れ子

リスト、タプルは入れ子にできる。リストの要素にタプルがあってもよく、その逆も可能。

リストとタプルの違い

リストの要素は変更できるが、タプルの要素は変更できない。

ただしタプルの要素がオブジェクトの場合、オブジェクトへの参照が変わらなければ、オブジェクトの内容は変更可能。

相互変換

list()関数でタプルをリストに、tuple()関数でリストをタプルに変換可能。

リスト

リストの初期化

共通操作

要素の個数

要素数はlen()関数で得られる。

要素へのアクセス

インデックスを指定してアクセスできる。最初の要素のインデックスは0となる。

インデックスに負の数を指定すると、-1を最後尾としてそこから前方へカウントする。

forによる順次アクセス

forで個々の要素にアクセスできる。

結合

リスト同士、タプル同士を結合して、新たなリスト/タプルを生成できる。

部分列

  • [n:m]でn番目からm-1番目の要素を取り出した部分列を返す
  • [:m]は先頭からm-1番目まで、[n:]はn番目から最後までの部分列を返す
  • [n:m:s]でn番目~m-1番目の要素をs個おきで返す

n、mにマイナスの値を指定すると、後ろから数える。-1が最後の要素を差し、そこから前へ遡っていく。ただしmに-1を指定すると、その一つ手前の-2番目の要素までが対象となる。

要素の検索

in演算子
要素がリストに含まれているかどうかを判定。
index()メソッド
指定した要素のインデックスを返す。2番目の引数で検索を開始するインデックスを指定可能。要素が存在しない場合はValueError。

リストのみの操作

以下の操作は要素の変更を伴うので、リストのみ可能。

要素の変更

単独要素の置き換えのほか、部分リストを指定した一括置換が可能。置き換えられるリストと置き換えるリストの長さが違う場合、自動的にリストの長さが変更される。

要素の追加・削除

要素の追加

append()メソッド
引数をリストの要素として追加する。
insert()メソッド
インデックスで指定した要素の前に新たな要素を追加する。

要素の削除

詳細はこちら

del文
添字を指定してリストの要素を削除する。部分リストを指定して削除することも可能。
remove()メソッド
要素そのものを指定して削除する。同じ値の要素が複数存在する場合、最初の要素を削除する。
pop()メソッド
指定した位置の要素を取り出して削除する。先頭要素はゼロ番目、位置指定を省略した場合は最後尾。

リストの拡張

extend()メソッドにより、リストに他のリストの要素を展開して追加できる。

内包表記

内包表記を参照。

 

Python3 – リテラル

数値

整数

基数

10進のほか、8進、16進、2進表記が可能。


console.log()→print()としても結果は同じ。

長整数

Python2では長整数L/lがあったが、Python3ではintとlongは統合され、L/lの表記は廃止された。

Python3のprint関数では表現は変わらないが、一定値を超えるとObject扱いとなり、Brysonのconsole.logではオブジェクト形式で表示される。

print()ではint、longとも表示は変わらないが、console.log()で長整数の場合はObject表現となる。

浮動小数点数

虚数・複素数

Pythonでは複素数が扱え、虚数単位は数値に続く”j”で表す。

論理値

論理値はTrue/Falseの二値。頭文字を大文字にすること(小文字の場合は未定義変数扱いになる)

文字列

文字列リテラルは、ダブルクォート(“)かシングルクォート(‘)で囲む。

エスケープ

バックスラッシュ(\)によって制御文字を表したり、特殊文字を通常の文字として扱える。

\n 改行
\t タブ
\” ダブルクォート(“)
\’ シングルクォート(‘)
\\ バックスラッシュ(\)

Linuxコマンド – chmod

概要

ファイルやディレクトリのパーミッションを変更する。パーミッションは記号または数値で指定する。

記法

オプション

-c 権限変更されたファイルのみ詳細に表示
-f 権限変更できなかった場合もエラーメッセージを表示しない
-v 経過を表示
-R ディレクトリとその下のファイルを再帰的に変更

記号モード(シンボリックモード)

記号の意味

u 所有者の権限
g グループの権限
o その他のユーザの権限
a 全てのユーザの権限
無指定 a(全てのユーザ)と同じ意味
+ 指定したユーザに後に記述した権限を付加する
指定したユーザから後に記述した権限を削除する
= 指定したユーザの権限を後に記述した権限に変更する
r 読み出し権限
w 書き込み権限
x 実行権限

使用例

全てのユーザに実行権限を与える。

グループとその他のユーザから書き込み権限を削除する

絶対モード

u, g, oそれぞれのrwxのパターンに対応した0~7の8進数で指定。

0
–x 1
-w- 2
-wx 3
r– 4
r-x 5
rw- 6
rwx 7

対応例

-rw-r—– 640
-r——– 400
-rwxrwxrwx 777

 

HTML – input

概要

input要素はフォームを構成する各種入力部品を作成する際に使用する。

書式

<input type="type" id="id" name="name" ...>

id属性

  • id属性によってlabelとinput要素を関連付け(labelをクリックしたときにinputと同様の反応をさせるなど)。

name属性

  • ラジオボタンやチェックボックスを一つのグループとしてまとめる

type属性

input要素のtype属性で部品の種類を指定し、部品のタイプに応じた属性でそれぞれの設定を行う。

ype属性のデフォルトは”text”。

“button” 汎用ボタン
“checkbox” チェックボックス
“color” カラーピッカー
“date” 日付選択
“email” メールアドレス入力に特化
“file” ファイルの選択
“hidden” 非表示の隠しデータ
“image” 画像ボタン
“number” スピンで整数の選択
“password” パスワード入力に特化
“radio” ラジオボタン
“range” スライダーで数値を選ぶ
“submit” 送信ボタン
“text” 一行テキストボックス
“time” 時刻選択

【注】

  • emailはフォーム内のsubmitボタンを押したときに内容をチェックする
  • resetは非推奨とされているので載せていない。

任意属性

type=”…”
MIMEタイプを指定
media=”…”
メディアクエリ(初期値は”all”)
hreflang=”…”
外部リソースの言語を指定
sizes=”…”
アイコンなどのサイズを指定

 

HTML5 – link

link要素の配置

meta要素は文書にリンクさせる外部ソースを指定する際に使用し、<head>~</head>の間に配置する。

link要素の属性

link要素には必須属性と任意属性がある。

必須属性

rel リンク先のリンクタイプを指定。CSSの場合はstylesheet
href リンク先のURL

任意属性

type MIMEタイプを指定
media メディアクエリ(初期値は”all”)
hreflang 外部リソースの言語を指定。
sizes アイコンなどのサイズを指定。

雛形

スタイルシート
<link rel="stylesheet href="cssファイルのURL">