Python 3

Python3入門のためのPDFテキストを配布しています.

本書はフリーソフトウェアの書籍です.出典明記していただければ自由に使っていただいて結構です.(印刷,再配布も可)
●書籍情報
「Python3入門 - KivyによるGUIアプリケーション開発,サウンド入出力,ウェブスクレイピング」, 中村勝則, IDEJ出版, 2024年, ISBN978-4-9910291-3-4 C3004

「Python3入門」 (ミラーサイト1)(ミラーサイト2

公開しているテキストに関する質問やメッセージお待ちしています.

Python3 ライブラリブック」 (ミラーサイト1)(ミラーサイト2

【Python3入門の目次】
1 はじめに — 1
  1.1 Pythonでできること — 1
  1.2 本書の内容 — 1
  1.3 本書の読み方 — 1
  1.4 処理系の導入(インストール)と起動の方法 — 2
    1.4.1 Python処理系のディストリビューション(配布形態) — 2
    1.4.2 Python処理系の起動 — 2
    1.4.3 対話モード:REPL — 3
      1.4.3.1 Python言語処理系の終了 — 3
      1.4.3.2 ヒストリ — 3
      1.4.3.3 直前の値 — 3
      1.4.3.4 REPLの機能に関すること — 4
  1.5 本書で取り扱うGUIライブラリ — 4
  1.6 表記に関する注意事項 — 4
  1.7 Pythonに関する詳しい情報 — 4
2 Pythonの基礎 — 5
  2.1 スクリプトの実行 — 5
    2.1.1 プログラム中に記述するコメント — 6
    2.1.2 プログラムのインデント — 7
  2.2 文を分割して/連結して記述する方法 — 7
  2.3 文の記述の省略 — 8
  2.4 変数とデータの型 — 8
    2.4.1 日本語の変数名の使用 — 9
    2.4.2 変数名に関する注意 — 9
    2.4.3 イコール「=」の連鎖(Multiple Assignment) — 10
    2.4.4 変数の解放(廃棄) — 10
    2.4.5 変数が値を保持する仕組みの概観 — 11
      2.4.5.1 識別値に関する注意事項 — 12
    2.4.6 数値 — 12
      2.4.6.1 整数: int型 — 13
      2.4.6.2 巨大な整数値を扱う際の注意 — 13
      2.4.6.3 浮動小数点数: float型 — 14
      2.4.6.4 アンダースコア「_」を含む数値リテラルの記述 — 16
      2.4.6.5 基数の指定: 2進数,8進数,16進数 — 16
      2.4.6.6 複素数: complex型 — 16
      2.4.6.7 各種の数の型と数学的階層 — 17
      2.4.6.8 最大値,最小値 — 18
      2.4.6.9 浮動小数点数の誤差と丸め — 18
      2.4.6.10 数学関数 — 19
      2.4.6.11 特殊な値:inf, nan — 21
      2.4.6.12 多倍長精度の浮動小数点数の扱い — 23
      2.4.6.13 分数の扱い — 26
      2.4.6.14 乱数の生成 — 28
    2.4.7 文字列 — 31
      2.4.7.1 エスケープシーケンス — 31
      2.4.7.2 raw文字列(raw string) — 32
      2.4.7.3 複数行に渡る文字列 — 32
      2.4.7.4 文字列の長さ(文字数) — 33
      2.4.7.5 文字列リテラルの連接 — 33
      2.4.7.6 文字列の分解と合成 — 33
      2.4.7.7 文字列の置換 — 35
      2.4.7.8 文字の置換 — 36
      2.4.7.9 英字,数字の判定 — 36
      2.4.7.10 大文字/小文字の変換と判定 — 37
      2.4.7.11 文字列の含有検査 — 37
      2.4.7.12 文字列の検索 — 38
      2.4.7.13 両端の文字の除去 — 39
      2.4.7.14 文字コード,文字の種別に関すること — 40
      2.4.7.15 文字列のデータサイズについて — 42
    2.4.8 真理値(bool型) — 43
    2.4.9 ヌルオブジェクト:None — 43
    2.4.10 式や値の記述の省略 — 44
    2.4.11 型の変換 — 44
      2.4.11.1 各種の値の文字列への変換(str,repr) — 44
    2.4.12 型の検査 — 45
      2.4.12.1 floatの値が整数値かどうかを検査する方法 — 46
    2.4.13 基数の変換 — 46
      2.4.13.1 n進数→10進数 — 46
      2.4.13.2 10進数→n進数 — 47
    2.4.14 ビット演算 — 47
      2.4.14.1 ビット演算の累算代入 — 48
      2.4.14.2 整数値のビット長を求める方法 — 48
    2.4.15 バイト列 — 49
  2.5 データ構造 — 50
    2.5.1 リスト — 50
      2.5.1.1 空リスト — 50
      2.5.1.2 リストの要素へのアクセス — 50
      2.5.1.3 リストの編集 — 51
      2.5.1.4 リストによるスタック,キューの実現: popメソッド — 54
      2.5.1.5 リストに対する検査 — 55
      2.5.1.6 例外処理 — 56
      2.5.1.7 要素の個数のカウント — 57
      2.5.1.8 要素の合計: sum関数 — 58
      2.5.1.9 要素の整列 (1): sortメソッド — 58
      2.5.1.10 要素の整列 (2): sorted関数 — 59
      2.5.1.11 要素の順序の反転 — 59
      2.5.1.12 リストの複製 — 59
      2.5.1.13 リストか否かの判定 — 61
      2.5.1.14 リストの内部に他のリストを展開する方法 — 61
    2.5.2 タプル — 61
      2.5.2.1 リストとタプルの違い — 62
      2.5.2.2 括弧の表記が省略できるケース — 63
      2.5.2.3 特殊なタプル — 63
      2.5.2.4 タプルの要素を整列(ソート)する方法 — 63
      2.5.2.5 タプルか否かの判定 — 64
    2.5.3 セット — 64
      2.5.3.1 セットの要素となるオブジェクト — 64
      2.5.3.2 セットの生成 — 65
      2.5.3.3 セットに対する各種の操作 — 66
      2.5.3.4 集合論の操作 — 67
      2.5.3.5 セットか否かの判定 — 68
      2.5.3.6 frozenset — 68
    2.5.4 辞書型 — 69
      2.5.4.1 空の辞書の作成 — 69
      2.5.4.2 エントリの削除 — 69
      2.5.4.3 エントリの存在検査 — 70
      2.5.4.4 getメソッドによる辞書へのアクセス — 70
      2.5.4.5 全てのエントリの削除 — 70
      2.5.4.6 辞書に対するpop — 71
      2.5.4.7 辞書の更新 — 71
      2.5.4.8 辞書の結合 — 72
      2.5.4.9 辞書を他の辞書の内部に展開する方法 — 72
      2.5.4.10 キーや値の列を取り出す方法 — 72
      2.5.4.11 エントリの数を調べる方法 — 73
      2.5.4.12 リストやタプルから辞書を生成する方法 — 73
      2.5.4.13 辞書の全エントリを列として取り出す方法 — 74
      2.5.4.14 辞書の複製 — 74
      2.5.4.15 エントリの順序 — 74
      2.5.4.16 辞書の整列 — 75
      2.5.4.17 辞書の同値性 — 75
      2.5.4.18 辞書か否かの判定 — 75
    2.5.5 添字(スライス)の高度な応用 — 76
      2.5.5.1 添字の値の省略 — 76
      2.5.5.2 スライスオブジェクト — 76
      2.5.5.3 逆順の要素指定 — 76
      2.5.5.4 不連続な部分の取り出し — 77
    2.5.6 データ構造の変換 — 77
    2.5.7 データ構造の要素を他のデータ構造の中に展開する方法 — 78
    2.5.8 データ構造に沿った値の割当て(分割代入) — 78
      2.5.8.1 応用例1:変数の値の交換 — 79
      2.5.8.2 応用例2:高度な代入処理 — 79
      2.5.8.3 データ構造の選択的な部分抽出 — 80
    2.5.9 データ構造のシャッフル,ランダムサンプリング — 80
    2.5.10 データ構造へのアクセスの速度について — 81
    2.5.11 累算代入によるデータ構造の拡張に関する注意点 — 81
  2.6 制御構造 — 82
    2.6.1 繰り返し(1): for — 82
      2.6.1.1 イテラブルなオブジェクト — 82
      2.6.1.2 「スイート」の概念 — 82
      2.6.1.3 スイートが1行の場合の書き方 — 83
      2.6.1.4 range関数,rangeオブジェクト — 83
      2.6.1.5 辞書のfor文への応用 — 84
      2.6.1.6 for文におけるelse — 84
      2.6.1.7 forを使ったデータ構造の生成(要素の内包表記) — 85
      2.6.1.8 イテレータ — 85
      2.6.1.9 分割代入を用いたfor文 — 87
      2.6.1.10 zip関数とzipオブジェクト — 87
      2.6.1.11 enumerateによるインデックス情報の付与 — 89
    2.6.2 繰り返し(2): while — 89
    2.6.3 繰り返しの中断とスキップ — 90
    2.6.4 条件分岐 — 90
      2.6.4.1 条件式 — 91
      2.6.4.2 比較演算子の連鎖 — 91
      2.6.4.3 データ構造の比較 — 92
      2.6.4.4 各種の「空」値に関する条件判定 — 93
      2.6.4.5 is演算子による比較 — 94
      2.6.4.6 値の型の判定 — 95
  2.7 入出力 — 96
    2.7.1 標準出力 — 96
      2.7.1.1 出力データの書式設定 — 96
      2.7.1.2 sysモジュールによる標準出力の扱い — 99
    2.7.2 標準入力 — 100
      2.7.2.1 input関数による入力の取得 — 100
      2.7.2.2 sysモジュールによる標準入力の扱い — 101
    2.7.3 ファイルからの入力 — 101
      2.7.3.1 ファイル,ディレクトリのパスについて — 102
      2.7.3.2 扱うファイルのエンコーディング,改行コードの指定 — 103
      2.7.3.3 テキストファイルとバイナリファイルについて — 105
      2.7.3.4 バイト列の扱い — 105
      2.7.3.5 バイト列のコード体系を調べる方法 — 107
      2.7.3.6 指定したバイト数だけ読み込む方法 — 107
      2.7.3.7 ファイルの内容を一度で読み込む方法 — 107
      2.7.3.8 ファイルをイテラブルとして読み込む方法 — 108
      2.7.3.9 readlinesメソッドによるテキストファイルの読み込み — 108
      2.7.3.10 データを読み込む際のファイル中の位置について — 109
    2.7.4 ファイルへの出力 — 109
      2.7.4.1 print関数によるファイルへの出力 — 109
      2.7.4.2 writelinesメソッドによる出力 — 110
      2.7.4.3 出力バッファの書き出し — 110
    2.7.5 標準エラー出力 — 110
    2.7.6 標準入出力でバイナリデータを扱う方法 — 112
    2.7.7 パス(ファイル,ディレクトリ)の扱い:その1 – osモジュール — 113
      2.7.7.1 カレントディレクトリに関する操作 — 113
      2.7.7.2 ホームディレクトリの取得 — 113
      2.7.7.3 ディレクトリ内容の一覧(1) — 113
      2.7.7.4 ディレクトリ内容の一覧(2) — 114
      2.7.7.5 ファイルのサイズの取得 — 114
      2.7.7.6 ファイル,ディレクトリの検査 — 114
      2.7.7.7 ファイル,ディレクトリの削除 — 115
      2.7.7.8 実行中のスクリプトに関する情報 — 115
      2.7.7.9 パスの表現に関すること — 115
    2.7.8 パス(ファイル,ディレクトリ)の扱い:その2 – pathlibモジュール — 116
      2.7.8.1 パスオブジェクトの生成 — 117
      2.7.8.2 カレントディレクトリ,ホームディレクトリの取得 — 117
      2.7.8.3 パスの存在の検査 — 117
      2.7.8.4 ファイル,ディレクトリの検査 — 117
      2.7.8.5 ディレクトリの要素を取得する — 117
      2.7.8.6 ディレクトリ名,ファイル名,拡張子の取り出し — 117
      2.7.8.7 パスの連結 — 118
      2.7.8.8 ファイルシステム毎のパスの表現 — 118
      2.7.8.9 URIへの変換 — 118
      2.7.8.10 ファイルのオープン — 118
      2.7.8.11 ファイル入出力 — 119
      2.7.8.12 ディレクトリの作成 — 120
      2.7.8.13 ファイル,ディレクトリの削除 — 120
      2.7.8.14 Pathオブジェクトの文字列への変換 — 120
    2.7.9 コマンド引数の取得 — 121
    2.7.10 入出力処理の際に注意すること — 121
    2.7.11 CSVファイルの取り扱い: csvモジュール — 121
      2.7.11.1 CSVファイルの出力 — 122
      2.7.11.2 CSVファイルの入力 — 125
  2.8 関数の定義 — 130
    2.8.1 引数について — 130
      2.8.1.1 引数に暗黙値(デフォルト値)を設定する方法 — 131
      2.8.1.2 仮引数のシンボルを明に指定する関数呼び出し(キーワード引数) — 131
      2.8.1.3 引数の個数が不定の関数 — 132
      2.8.1.4 実引数に ‘‘ を記述する方法 — 132       2.8.1.5 キーワード引数を辞書として受け取る方法 — 132       2.8.1.6 実引数に ‘*’ を記述する方法 — 133
      2.8.1.7 引数に与えたオブジェクトに対する変更の影響 — 133
      2.8.1.8 引数に関するその他の事柄 — 135
    2.8.2 変数のスコープ(関数定義の内外での変数の扱いの違い) — 138
    2.8.3 関数の再帰的定義 — 139
      2.8.3.1 再帰的呼び出しの回数の上限 — 140
      2.8.3.2 再帰的呼び出しを応用する際の注意 — 141
    2.8.4 内部関数 — 142
      2.8.4.1 内部関数におけるローカル変数 — 142
      2.8.4.2 内部関数はいつ作成されるのか — 143
      2.8.4.3 内部関数の応用:クロージャ,エンクロージャ — 143
    2.8.5 定義した関数の削除 — 145
  2.9 オブジェクト指向プログラミング — 146
    2.9.1 クラスの定義 — 146
      2.9.1.1 コンストラクタとファイナライザ — 146
      2.9.1.2 インスタンス変数 — 148
      2.9.1.3 メソッドの定義 — 148
      2.9.1.4 クラス変数 — 149
    2.9.2 クラス,インスタンス間での属性の関係 — 151
    2.9.3 setattr,getattr による属性へのアクセス — 152
    2.9.4 組み込みの演算子や関数との連携 — 153
      2.9.4.1 各種クラスのコンストラクタに対するフック — 154
      2.9.4.2 算術演算子,比較演算子,各種関数に対するフック — 155
      2.9.4.3 累算代入演算子に対するフック — 157
    2.9.5 インスタンス変数へのアクセスのカスタマイズ — 157
      2.9.5.1 存在しないインスタンス変数が参照された際のフック: __getattr__ — 157
      2.9.5.2 インスタンス変数の参照に対するフック: __getattribute__ — 158
      2.9.5.3 インスタンス変数への値の代入に対するフック: __setattr__ — 159
    2.9.6 コンテナのクラスを実装する方法 — 159
      2.9.6.1 マルチスライス(多重スライス) — 160
    2.9.7 イテレータのクラスを実装する方法 — 161
    2.9.8 カプセル化 — 162
      2.9.8.1 変数の隠蔽 — 162
      2.9.8.2 アクセサ(ゲッタ,セッタ) — 163
    2.9.9 メソッドのオーバーライドとsuper() — 165
      2.9.9.1 superオブジェクト — 166
    2.9.10 インスタンス生成に関する制御: __new__ — 168
      2.9.10.1 新規インスタンス生成の仕組み — 168
      2.9.10.2 シングルトン — 169
    2.9.11 オブジェクト指向プログラミングに関するその他の事柄 — 170
      2.9.11.1 クラス変数,インスタンス変数の調査 — 170
      2.9.11.2 クラスの継承関係の調査 — 170
      2.9.11.3 インスタンスのクラスの調査 — 171
      2.9.11.4 属性の調査(プロパティの調査) — 171
      2.9.11.5 多重継承におけるメソッドの優先順位 — 172
      2.9.11.6 静的メソッド(スタティックメソッド) — 173
      2.9.11.7 クラスの定義の削除 — 173
  2.10 データ構造に則したプログラミング — 175
    2.10.1 map関数 — 175
      2.10.1.1 複数の引数を取る関数のmap — 177
      2.10.1.2 map関数にzipオブジェクトを与える方法 — 177
    2.10.2 lambdaと関数定義 — 178
    2.10.3 filter — 179
    2.10.4 3項演算子としての if~else… — 180
    2.10.5 all, anyによる一括判定 — 180
      2.10.5.1 使用上の注意:ネストされたデータ構造 — 182
    2.10.6 高階関数モジュール:functools — 182
      2.10.6.1 reduce — 182
  2.11 代入式 — 183
  2.12 構造的パターンマッチング — 184
    2.12.1 構造的なパターン — 185
    2.12.2 条件付きのパターンマッチング — 186
    2.12.3 クラスのインスタンスに対するパターンマッチング — 186
3 KivyによるGUIアプリケーションの構築 — 188
  3.1 Kivyの基本 — 188
    3.1.1 アプリケーションプログラムの実装 — 188
    3.1.2 GUI構築の考え方 — 188
      3.1.2.1 Widget(ウィジェット) — 189
      3.1.2.2 Layout(レイアウト) — 189
      3.1.2.3 Screen(スクリーン) — 191
    3.1.3 ウィンドウの扱い — 192
    3.1.4 マルチタッチの無効化 — 192
  3.2 基本的なGUIアプリケーション構築の方法 — 193
    3.2.1 イベント処理(導入編) — 193
      3.2.1.1 イベントハンドリング — 193
    3.2.2 アプリケーション構築の例 — 194
    3.2.3 イベント処理(コールバックの登録による方法) — 197
    3.2.4 ウィジェットの登録と削除 — 198
    3.2.5 アプリケーションの開始と終了のハンドリング — 199
  3.3 各種ウィジェットの使い方 — 199
    3.3.1 ラベル:Label — 200
      3.3.1.1 リソースへのフォントの登録 — 201
    3.3.2 ボタン:Button — 202
    3.3.3 テキスト入力:TextInput — 202
    3.3.4 チェックボックス:CheckBox — 203
    3.3.5 進捗バー:ProgressBar — 203
    3.3.6 スライダ:Slider — 203
    3.3.7 スイッチ:Switch — 203
    3.3.8 トグルボタン:ToggleButton — 204
    3.3.9 画像:Image — 204
      3.3.9.1 サンプルプログラム — 204
  3.4 Canvasグラフィックス — 205
    3.4.1 Graphicsクラス — 206
      3.4.1.1 Color — 206
      3.4.1.2 Line — 206
      3.4.1.3 Rectangle — 206
      3.4.1.4 Ellipse — 207
    3.4.2 サンプルプログラム — 207
      3.4.2.1 正弦関数のプロット — 207
      3.4.2.2 各種図形,画像の表示 — 207
    3.4.3 フレームバッファへの描画 — 209
      3.4.3.1 ピクセル値の取り出し — 210
      3.4.3.2 イベントから得られる座標位置 — 210
  3.5 スクロールビュー(ScrollView) — 211
    3.5.1 ウィジェットのサイズ設定 — 212
    3.5.2 マウスのドラッグによるスクロール — 212
  3.6 ウィンドウサイズを固定(リサイズを禁止)する設定 — 212
  3.7 Kivy言語によるUIの構築 — 212
    3.7.1 Kivy言語の基礎 — 213
      3.7.1.1 サンプルプログラムを用いた説明 — 213
      3.7.1.2 PythonプログラムとKvファイルの対応 — 215
  3.8 時間によるイベント — 216
    3.8.1 時間イベントのスケジュール — 216
  3.9 GUI構築の形式 — 216
    3.9.1 スクリーンの扱い: ScreenとScreenManager — 216
      3.9.1.1 ScreenManager — 216
      3.9.1.2 Screen — 217
    3.9.2 アクションバー: ActionBar — 218
    3.9.3 タブパネル: TabbedPanel — 220
    3.9.4 スワイプ: Carousel — 221
4 実用的なアプリケーション開発に必要な事柄 — 223
  4.1 日付と時間に関する処理 — 223
    4.1.1 日付と時刻の取り扱い: datetime モジュール — 223
      4.1.1.1 datetimeオブジェクトの分解と合成 — 223
      4.1.1.2 文字列をdatetimeオブジェクトに変換する方法 — 224
      4.1.1.3 datetimeオブジェクトの差: timedelta — 224
      4.1.1.4 日付,時刻の書式整形 — 225
      4.1.1.5 datetimeのプロパティ — 225
      4.1.1.6 タイムゾーンについて — 226
    4.1.2 timeモジュール — 229
      4.1.2.1 基本的な機能 — 229
      4.1.2.2 日付,時刻を表す文字列表現 — 230
      4.1.2.3 応用例:datetimeオブジェクトとの間の変換 — 231
      4.1.2.4 時間の計測 — 232
      4.1.2.5 プログラムの実行待ち — 234
    4.1.3 timeitモジュール — 234
      4.1.3.1 計測方法の指定 — 235
  4.2 ロケール(locale) — 236
    4.2.1 ロケール設定の確認 — 236
    4.2.2 使用できるロケールの調査 — 237
    4.2.3 その他 — 238
      4.2.3.1 現在のエンコーディングの調査 — 238
      4.2.3.2 通貨の書式整形 — 238
  4.3 文字列検索と正規表現 — 239
    4.3.1 パターンの検索 — 239
      4.3.1.1 正規表現を用いた検索 — 241
      4.3.1.2 検索パターンの和結合 — 243
      4.3.1.3 正規表現を用いたパターンマッチ — 243
      4.3.1.4 行頭や行末でのパターンマッチ — 244
    4.3.2 置換処理: re.sub — 245
      4.3.2.1 複数行に渡る置換処理 — 245
      4.3.2.2 パターンマッチのグループを参照した置換処理 — 246
    4.3.3 文字列の分解への応用: re.split — 246
  4.4 マルチスレッドとマルチプロセス — 247
    4.4.1 マルチスレッド — 247
      4.4.1.1 スレッドの実行状態の確認 — 248
      4.4.1.2 実行中のスレッドのリストを取得する方法 — 249
      4.4.1.3 スレッド間の排他制御 — 249
    4.4.2 マルチプロセス — 252
      4.4.2.1 プロセスごとに実行されるモジュール — 253
      4.4.2.2 プロセスの実行状態の確認 — 253
      4.4.2.3 実行中プロセスのリストを取得する方法 — 254
      4.4.2.4 プロセスの強制終了 — 254
      4.4.2.5 共有メモリと排他制御 — 255
    4.4.3 concurrent.futures — 262
      4.4.3.1 ProcessPoolExecutor — 262
      4.4.3.2 プロセスの実行状態と戻り値 — 262
      4.4.3.3 同時に実行されるプロセスの個数について — 264
      4.4.3.4 プロセス終了の同期 — 264
    4.4.4 マルチスレッドとマルチプロセスの実行時間の比較 — 265
  4.5 非同期処理: asyncio — 267
    4.5.1 コルーチン — 267
    4.5.2 コルーチンとタスクの違い — 268
      4.5.2.1 複数のタスクの並行実行 — 268
    4.5.3 await によるタスクの一時停止と切替え — 268
    4.5.4 タスク登録の簡便な方法 — 269
    4.5.5 イベントループとrun関数 — 270
      4.5.5.1 スレッド毎に実行されるイベントループ — 270
      4.5.5.2 実行中のイベントループを調べる方法 — 271
    4.5.6 理解を深めるためのサンプル — 271
      4.5.6.1 非同期処理とイベントループの概観 — 272
    4.5.7 スレッドを非同期処理で管理する方法 — 273
    4.5.8 非同期のコンソール入力を実現するためのライブラリ:aioconsole — 275
    4.5.9 永続するイベントループ上でのタスク管理 — 276
      4.5.9.1 永続するイベントループ — 276
      4.5.9.2 タスクの一覧取得とタスクのキャンセル — 277
    4.5.10 非同期のイテレーション — 279
      4.5.10.1 非同期のイテラブル — 279
    4.5.11 非同期のファイル入出力:aiofiles — 280
      4.5.11.1 サンプルプログラム — 281
  4.6 処理のスケジューリング — 283
    4.6.1 sched モジュール — 283
      4.6.1.1 基本的な使用方法 — 283
      4.6.1.2 イベントを独立したスレッドで実行する方法 — 284
      4.6.1.3 イベントの管理 — 286
    4.6.2 schedule モジュール — 286
      4.6.2.1 一定の時間間隔で処理を起動する方法 — 287
      4.6.2.2 指定した時刻に処理を起動する方法 — 288
  4.7 ジェネレータ — 289
    4.7.1 ジェネレータ関数 — 289
    4.7.2 ジェネレータ式 — 290
    4.7.3 ジェネレータの入れ子 — 290
  4.8 モジュール,パッケージの作成による分割プログラミング — 291
    4.8.1 モジュール — 291
      4.8.1.1 単体のソースファイルとしてのモジュール — 291
    4.8.2 パッケージ(ディレクトリとして構成するライブラリ) — 292
      4.8.2.1 モジュールの実行 — 293
    4.8.3 モジュールが配置されているディレクトリの調査 — 293
    4.8.4 __init__.pyについて — 294
  4.9 ファイル内でのランダムアクセス — 296
    4.9.1 ファイルのアクセス位置の指定(ファイルのシーク) — 296
    4.9.2 サンプルプログラム — 296
  4.10 オブジェクトの保存と読込み: pickleモジュール — 298
    4.10.1 シリアライズと復元のカスタマイズ方法 — 300
    4.10.2 シリアライズされたバイナリデータのプロトコルレベル — 301
      4.10.2.1 シリアライズされたバイナリデータのプロトコルレベルを調べる方法 — 302
      4.10.2.2 シリアライズ時のプロトコルレベルの指定 — 302
    4.10.3 使用上の注意事項 — 304
  4.11 バイナリデータの作成と展開: structモジュール — 305
    4.11.1 バイナリデータの作成 — 305
    4.11.2 バイナリデータの展開 — 306
    4.11.3 バイトオーダーについて — 306
  4.12 バイナリデータをテキストに変換する方法: base64モジュール — 308
    4.12.1 バイト列→Base64データ — 308
    4.12.2 Base64データ→バイト列 — 308
    4.12.3 サンプルプログラム — 308
  4.13 編集可能なバイト列:bytearray — 309
    4.13.1 bytearrayの作成方法 — 309
    4.13.2 他の型への変換 — 310
    4.13.3 ファイルへの出力 — 310
  4.14 メモリ上でのファイル操作 — 311
    4.14.1 仮想的なテキストファイル: io.StringIO — 311
    4.14.2 仮想的なバイナリファイル: io.BytesIO — 311
    4.14.3 StringIO,BytesIOを使用する際の注意事項 — 312
  4.15 execとeval — 313
    4.15.1 名前空間の指定 — 313
    4.15.2 eval関数 — 314
  4.16 collectionsモジュール — 315
    4.16.1 キュー: deque — 315
      4.16.1.1 要素の追加と取り出し: append,pop — 315
      4.16.1.2 要素の順序の回転: rotate — 315
    4.16.2 要素の集計: Counter — 316
      4.16.2.1 出現頻度の順に集計結果を取り出す — 316
    4.16.3 namedtuple — 317
  4.17 itertoolsモジュール — 318
    4.17.1 イテラブルの連結: chain — 318
    4.17.2 無限のカウンタ: count — 318
    4.17.3 イテラブルの繰り返し: cycle — 319
    4.17.4 オブジェクトの繰り返し: repeat — 319
    4.17.5 連続要素のグループ化: groupby — 319
    4.17.6 直積集合: product — 320
    4.17.7 組合せ: combinations — 321
    4.17.8 順列: permutations — 321
  4.18 列挙型: enumモジュール — 322
    4.18.1 Enum型 — 322
      4.18.1.1 class定義によるEnumオブジェクトの作成 — 323
    4.18.2 定数の取り扱いを実現する方法の例 — 323
    4.18.3 IntEnum — 324
    4.18.4 auto関数によるEnum要素への値の割り当て — 325
      4.18.4.1 非数値要素へのauto関数による値の割り当て(参考事項) — 325
    4.18.5 ビットフラグ: Flag — 326
      4.18.5.1 Flagの要素へのauto関数による値の割り当て — 327
      4.18.5.2 整数の性質を持つビットフラグ: IntFlag — 327
  4.19 例外(エラー)の処理 — 329
    4.19.1 エラーメッセージをデータとして取得する方法: tracebackモジュール — 329
    4.19.2 例外を発生させる方法 — 329
    4.19.3 例外オブジェクト — 330
      4.19.3.1 例外オブジェクトのクラス階層 — 331
  4.20 使用されているシンボルの調査 — 331
  4.21 with構文 — 332
  4.22 デコレータ — 336
    4.22.1 引数を取るデコレータ — 337
  4.23 データ構造の整形表示: pprintモジュール — 338
  4.24 文字列の整形処理(分割,折り返しなど): textwrapモジュール — 339
    4.24.1 長い文字列の分割 — 339
    4.24.2 インデントの除去 — 340
    4.24.3 インデントの挿入 — 340
  4.25 処理環境に関する情報の取得 — 341
    4.25.1 Pythonのバージョン情報の取得 — 341
    4.25.2 platformモジュールの利用 — 341
    4.25.3 実行中のプログラムのPIDの取得 — 342
    4.25.4 環境変数の参照 — 342
  4.26 ファイル,ディレクトリに対する操作: shutil モジュール — 344
    4.26.1 ファイルの複製 — 344
    4.26.2 ディレクトリ階層の複製 — 344
    4.26.3 書庫ファイル(アーカイブ)の取り扱いと圧縮処理に関すること — 344
      4.26.3.1 書庫(アーカイブ)の作成 — 345
      4.26.3.2 書庫(アーカイブ)の展開 — 345
  4.27 ZIP書庫の扱い: zipfileモジュール — 345
    4.27.1 ZIP書庫ファイルを開く — 345
    4.27.2 書庫へのメンバの追加 — 346
    4.27.3 書庫の内容の確認 — 346
    4.27.4 書庫のメンバの読み込み — 346
    4.27.5 書庫の展開 — 347
      4.27.5.1 パスワードで保護されたZIP書庫へのアクセス — 347
  4.28 コマンド引数の扱い: argparseモジュール — 348
    4.28.1 コマンド引数の形式 — 348
    4.28.2 使用方法 — 348
      4.28.2.1 オプション引数の設定 — 348
      4.28.2.2 位置引数の設定 — 349
      4.28.2.3 コマンドラインの解析処理 — 349
    4.28.3 サンプルプログラムに沿った説明 — 349
      4.28.3.1 ヘルプ機能 — 350
      4.28.3.2 コマンド引数の型の指定 — 350
    4.28.4 サブコマンドの実現方法 — 351
  4.29 スクリプトの終了(プログラムの終了) — 352
    4.29.1 sys.exit 関数 — 352
    4.29.2 os._exit 関数 — 353
    4.29.3 スクリプト終了時に実行する処理: atexitモジュール — 353
  4.30 Pythonの型システム — 354
    4.30.1 type型オブジェクト — 354
    4.30.2 型の階層(クラス階層) — 354
      4.30.2.1 スーパークラス,サブクラスを調べる方法 — 355
    4.30.3 数のクラス階層: numbersモジュール — 356
5 TCP/IPによる通信 — 359
  5.1 socketモジュール — 359
    5.1.1 ソケットの用意 — 359
    5.1.2 サーバ側プログラムの処理 — 359
    5.1.3 クライアント側プログラムの処理 — 360
    5.1.4 送信と受信 — 360
    5.1.5 サンプルプログラム:最も基本的な通信 — 360
    5.1.6 実用的な通信機能を実現する方法 — 362
      5.1.6.1 socketライブラリとasyncioライブラリの併用 — 362
      5.1.6.2 asyncioライブラリのみで通信を実現する方法 — 364
      5.1.6.3 通信の処理において注意すべき例外 — 367
  5.2 WWWコンテンツ解析 — 368
    5.2.1 requestsライブラリ — 368
      5.2.1.1 リクエストの送信に関するメソッド — 368
      5.2.1.2 取得したコンテンツに関するメソッド — 368
      5.2.1.3 Sessionオブジェクトに基づくアクセス — 369
    5.2.2 Beautiful Soupライブラリ — 370
      5.2.2.1 BSにおけるHTMLコンテンツの扱い — 370
6 外部プログラムとの連携 — 372
  6.1 外部プログラムを起動する方法 — 372
    6.1.1 標準入出力の接続 — 372
      6.1.1.1 外部プログラムの標準入力のクローズ — 375
    6.1.2 非同期の入出力 — 375
    6.1.3 外部プロセスとの同期(終了の待機) — 377
    6.1.4 外部プログラムを起動する更に簡単な方法 — 377
7 サウンドの入出力 — 379
  7.1 基礎知識 — 379
  7.2 WAV形式ファイルの入出力:waveモジュール — 379
    7.2.1 WAV形式ファイルのオープンとクローズ — 379
      7.2.1.1 WAV形式データの各種属性について — 380
    7.2.2 WAV形式ファイルからの読込み — 380
    7.2.3 サンプルプログラム — 380
    7.2.4 量子化ビット数とサンプリング値の関係 — 381
    7.2.5 読み込んだフレームデータの扱い — 381
    7.2.6 WAV形式データを出力する例(1):リストからWAVファイルへ — 383
    7.2.7 WAV形式データを出力する例(2):NumPyの配列からWAVファイルへ — 384
    7.2.8 サウンドのデータサイズに関する注意点 — 384
  7.3 サウンドの入力と再生:PyAudioライブラリ — 386
    7.3.1 ストリームを介したサウンド入出力 — 386
    7.3.2 WAV形式サウンドファイルの再生 — 387
      7.3.2.1 サウンド再生の終了の検出 — 389
    7.3.3 音声入力デバイスからの入力 — 389
A Pythonに関する情報 — 392
  A.1 Pythonのインターネットサイト — 392
  A.2 Pythonのインストール作業の例 — 392
    A.2.1 PSF版インストールパッケージによる方法 — 392
    A.2.2 Anacondaによる方法 — 393
  A.3 Python起動のしくみ — 394
    A.3.1 PSF版Pythonの起動 — 394
    A.3.2 Anaconda Navigatorの起動 — 394
    A.3.3 Anaconda Promptの起動 — 394
      A.3.3.1 condaコマンドによるPython環境の管理 — 396
  A.4 PIPによるライブラリ管理 — 396
    A.4.1 PIPコマンドが実行できない場合の解決策 — 397
B Kivyに関する情報 — 398
  B.1 Kivy利用時のトラブルを回避するための情報 — 398
    B.1.1 Kivyが使用する描画APIの設定 — 398
    B.1.2 SDLについて — 398
  B.2 GUIデザインツール — 398
C Tkinter:基本的なGUIツールキット — 399
  C.1 基本的な扱い方 — 399
    C.1.1 使用例 — 400
      C.1.1.1 ウィンドウサイズ変更の可否の設定 — 401
    C.1.2 ウィジェットの配置 — 401
  C.2 各種のウィジェット — 403
    C.2.1 チェックボタンとラジオボタン — 403
      C.2.1.1 Variableクラス — 403
    C.2.2 エントリ(テキストボックス)とコンボボックス — 405
      C.2.2.1 プログラムの終了 — 406
    C.2.3 リストボックス — 406
    C.2.4 テキスト(文字編集領域)とスクロールバー — 408
    C.2.5 スケール(スライダ)とプログレスバー — 409
      C.2.5.1 Variableクラスのコールバック関数設定 — 410
  C.3 メニューの構築 — 411
  C.4 Canvasの描画 — 412
    C.4.1 描画メソッド(一部) — 412
      C.4.1.1 使用できるフォントを調べる方法 — 413
    C.4.2 図形の管理 — 415
  C.5 イベントハンドリング — 417
    C.5.1 時間を指定した関数の実行 — 419
  C.6 複数のウィンドウの表示 — 420
  C.7 ディスプレイやウィンドウに関する情報の取得 — 421
  C.8 メッセージボックス(messagebox) — 422
    C.8.1 アプリケーション終了のハンドリング — 423
  C.9 ウィジェットの親,子を調べる方法 — 424
D curses — 425
  D.1 curses使用の流れ — 426
  D.2 画面に対する出力,制御 — 426
    D.2.1 色の設定と適用 — 426
    D.2.2 装飾の適用 — 427
    D.2.3 テキストカーソルの設定 — 427
    D.2.4 画面の消去,更新 — 427
    D.2.5 警告表現 — 427
  D.3 キーボード入力 — 429
    D.3.1 文字列の入力 — 429
    D.3.2 rawモード入力 — 429
  D.4 ウィンドウのリサイズ — 430
  D.5 画面の内容の採取 — 432
    D.5.1 文字コードや属性情報の採取 — 432
    D.5.2 画面の中の文字列の採取 — 433
E ライブラリの取り扱いについて — 435
  E.1 ライブラリの読込みに関すること — 435
    E.1.1 ライブラリ読込みにおける別名の付与 — 435
    E.1.2 接頭辞を省略するためのライブラリの読込み — 435
      E.1.2.1 接頭辞を省略する際の注意(名前の衝突) — 436
    E.1.3 ライブラリのパス:sys.path — 436
    E.1.4 既に読み込まれているライブラリの調査: sys.modules — 436
    E.1.5 同一ライブラリの複数回の読み込みに関すること — 437
    E.1.6 The Zen of Python — 438
  E.2 ライブラリ情報の取得 — 438
    E.2.1 pkg_resources による方法 — 438
    E.2.2 pkgutil,importlib による方法 — 439
  E.3 各種ライブラリの紹介 — 441
F 対話モードを使いやすくするための工夫 — 442
  F.1 警告メッセージの抑止と表示 — 442
  F.2 メモリの使用状態の管理 — 443
    F.2.1 オブジェクトのサイズの調査 — 443
G 文書化文字列と関数アノテーション — 445
  G.1 関数アノテーション(Function Annotations) — 446
H 型ヒント — 447
  H.1 型ヒントの存在意義 — 447
  H.2 mypyによるプログラムの静的診断 — 448
  H.3 変数に対する型ヒント — 448
  H.4 型ヒントのためのライブラリ: typing モジュール — 449
    H.4.1 様々な型ヒント — 450
I スロットベースのクラス — 451
  I.1 スロットベースのクラスが役立つケース — 452
  I.2 スロットベースのクラスを使用する上での注意点 — 452
J サンプルプログラム — 455
  J.1 リスト/セット/辞書のアクセス速度の比較 — 455
    J.1.1 スライスに整数のインデックスを与える形のアクセス — 455
    J.1.2 メンバシップ検査に要する時間 — 456
  J.2 ライブラリ使用の有無における計算速度の比較 — 459
  J.3 os.walk関数の応用例 — 462
  J.4 pathlibの応用例 — 463
  J.5 浮動小数点数と2進数の間の変換 — 464
    J.5.1 mpmathを用いた例 — 465
  J.6 全てのUnicode文字の列挙 — 466
K その他 — 467
  K.1 演算子の優先順位 — 467
  K.2 アスキーコード表 — 468

【Python3 ライブラリブックの目次】
1 画像の入出力と処理 — 1
  1.1 OpenCV — 1
    1.1.1 動画像の入力 — 2
    1.1.2 ユーザインターフェース — 2
      1.1.2.1 動画ファイルからの入力 — 3
    1.1.3 フレームのファイルへの保存 — 3
    1.1.4 静止画像の読込み — 3
    1.1.5 色空間とチャネル — 4
      1.1.5.1 画像フレームのチャネルの順序 — 5
      1.1.5.2 色空間の変換 — 6
      1.1.5.3 チャネルの分解と合成 — 7
      1.1.5.4 色空間の選択に関すること — 8
      1.1.5.5 参考)HSVの色相に関すること — 9
    1.1.6 カラー画像からモノクロ画像への変換 — 10
      1.1.6.1 モノクロ2値化 (1 :一定の閾値で判定 — 10
      1.1.6.2 モノクロ2値化 (2 :閾値を適応的に判定 — 11
    1.1.7 画像フレームに対する描画 — 13
      1.1.7.1 基本的な考え方 — 13
      1.1.7.2 線分,矢印 — 13
      1.1.7.3 矩形,円,楕円,円弧 — 14
      1.1.7.4 折れ線,多角形 — 16
      1.1.7.5 文字列 — 17
      1.1.7.6 マーカー — 18
  1.2 Pillow — 20
    1.2.1 画像ファイルの読込みと保存 — 20
      1.2.1.1 EPSを読み込む際の解像度 — 21
      1.2.1.2 画像ファイルの保存 — 21
    1.2.2 Imageオブジェクトの新規作成 — 21
    1.2.3 画像の閲覧 — 22
    1.2.4 画像の編集 — 22
      1.2.4.1 画像の拡大と縮小 — 22
      1.2.4.2 画像の部分の取り出し — 22
      1.2.4.3 画像の複製 — 23
      1.2.4.4 画像の貼り付け — 23
      1.2.4.5 画像の回転 — 23
    1.2.5 画像処理 — 23
      1.2.5.1 色の分解と合成 — 23
      1.2.5.2 カラー画像からモノクロ画像への変換 — 24
    1.2.6 描画 — 25
    1.2.7 アニメーションGIFの作成 — 26
    1.2.8 Imageオブジェクトから画素の数値配列への変換 — 27
2 GUIとマルチメディア — 28
  2.1 pygame — 28
    2.1.1 基礎事項 — 28
      2.1.1.1 Surfaceオブジェクト — 28
      2.1.1.2 アプリケーションの実行ループ — 28
    2.1.2 描画機能 — 30
      2.1.2.1 描画のサンプルプログラム — 32
      2.1.2.2 回転,拡縮のサンプルプログラム — 34
    2.1.3 キーボードとマウスのハンドリング — 36
    2.1.4 音声の再生 — 37
      2.1.4.1 Soundオブジェクトを用いる方法 — 38
      2.1.4.2 SoundオブジェクトからNumPyの配列への変換 — 39
    2.1.5 スプライトの利用 — 40
  2.2 Eel — 45
    2.2.1 基礎事項 — 45
      2.2.1.1 Chromeの起動モード — 46
    2.2.2 Python/JavaScriptで記述した関数の呼出し — 46
      2.2.2.1 関数の戻り値について — 48
  2.3 メディアデータの変換: PyDub — 49
    2.3.1 音声ファイルの読込み — 49
    2.3.2 音声データからNumPyの配列への変換 — 49
    2.3.3 NumPyの配列から音声データへの変換 — 50
    2.3.4 音声ファイルの保存 — 50
      2.3.4.1 MP3形式ファイルとして保存 — 50
      2.3.4.2 WAV形式ファイルとして保存 — 50
3 科学技術系 — 51
  3.1 数値計算と可視化のためのライブラリ:NumPy / matplotlib — 51
    3.1.1 NumPyで扱うデータ型 — 51
    3.1.2 配列オブジェクトの基本的な扱い方 — 51
      3.1.2.1 配列の要素の型について — 52
      3.1.2.2 真理値の配列 — 52
      3.1.2.3 基本的な計算処理 — 53
      3.1.2.4 扱える値の範囲 — 54
      3.1.2.5 特殊な値:無限大と非数 — 54
      3.1.2.6 データ列の生成(数列の生成) — 55
      3.1.2.7 多次元配列の生成 — 56
      3.1.2.8 配列の形状の調査 — 56
      3.1.2.9 配列の要素へのアクセス — 57
      3.1.2.10 スライスにデータ列を与えた場合の動作 — 57
      3.1.2.11 指定した行,列へのアクセス — 58
      3.1.2.12 配列形状の変形 — 58
      3.1.2.13 行,列の転置 — 60
      3.1.2.14 行,列の反転と回転 — 60
      3.1.2.15 型の変換 — 61
      3.1.2.16 配列の複製(コピー) — 61
    3.1.3 配列の連結と繰り返し — 62
      3.1.3.1 append,concatenateによる連結 — 62
      3.1.3.2 hstack,vstackによる連結 — 63
      3.1.3.3 tileによる配列の繰り返し — 64
    3.1.4 配列への要素の挿入 — 64
      3.1.4.1 行,列の挿入 — 65
    3.1.5 配列要素の部分的削除 — 66
      3.1.5.1 区間を指定した削除 — 66
      3.1.5.2 行,列の削除 — 67
    3.1.6 配列の次元の拡大 — 67
      3.1.6.1 newaxisオブジェクトによる方法 — 67
      3.1.6.2 expand_dimsによる方法 — 68
    3.1.7 データの抽出 — 68
      3.1.7.1 真理値列によるマスキング — 68
      3.1.7.2 条件式による要素の抽出 — 69
      3.1.7.3 論理演算子による条件式の結合 — 69
      3.1.7.4 whereによる要素の抽出と置換 — 69
      3.1.7.5 最大値,最小値,その位置の探索 — 70
    3.1.8 データの整列(ソート) — 72
      3.1.8.1 2次元配列の整列 — 72
      3.1.8.2 整列結果のインデックスを取得する方法 — 73
    3.1.9 配列要素の差分の配列 — 73
    3.1.10 配列に対する様々な処理 — 74
      3.1.10.1 重複する要素の排除 — 74
      3.1.10.2 要素の個数の集計 — 74
      3.1.10.3 整数要素の集計 — 75
      3.1.10.4 指定した条件を満たす要素の集計 — 75
    3.1.11 配列に対する演算:1次元から1次元 — 75
    3.1.12 データの可視化(基本) — 76
      3.1.12.1 作図処理の基本的な手順 — 77
      3.1.12.2 2次元のプロット:折れ線グラフ — 77
      3.1.12.3 グラフの目盛りの設定 — 80
      3.1.12.4 複数のグラフの作成 — 81
      3.1.12.5 matplotlibのグラフの構造 — 83
      3.1.12.6 グラフの枠を非表示にする方法 — 87
      3.1.12.7 極座標プロット — 87
      3.1.12.8 レーダーチャート(極座標の応用) — 88
      3.1.12.9 日本語の見出し・ラベルの表示 — 89
      3.1.12.10 グラフを画像ファイルとして保存する方法 — 90
    3.1.13 乱数の生成 — 91
      3.1.13.1 一様乱数の生成 — 91
      3.1.13.2 整数の乱数の生成 — 91
      3.1.13.3 正規乱数の生成 — 91
      3.1.13.4 乱数のseedについて — 91
      3.1.13.5 RandomStateオブジェクト — 92
    3.1.14 統計に関する処理 — 93
      3.1.14.1 合計 — 93
      3.1.14.2 最大値,最小値 — 93
      3.1.14.3 平均,分散,標準偏差 — 93
      3.1.14.4 分位点,パーセント点 — 94
      3.1.14.5 区間と集計(階級と度数調査) — 94
      3.1.14.6 最頻値を求める方法 — 97
      3.1.14.7 相関係数 — 100
      3.1.14.8 データのシャッフル — 101
    3.1.15 データの可視化(2) — 101
      3.1.15.1 ヒストグラム — 101
      3.1.15.2 散布図 — 103
      3.1.15.3 棒グラフ — 103
      3.1.15.4 円グラフ — 105
      3.1.15.5 箱ひげ図 — 107
    3.1.16 多次元配列に対する演算 — 108
      3.1.16.1 meshgrid関数の働き — 109
    3.1.17 データの可視化:3次元プロット — 110
      3.1.17.1 ワイヤフレーム — 110
      3.1.17.2 面プロット(surface plot) — 110
      3.1.17.3 3次元の棒グラフ — 112
      3.1.17.4 3次元の散布図 — 112
    3.1.18 データの可視化:その他 — 114
      3.1.18.1 ヒートマップ — 114
      3.1.18.2 表の作成 — 116
    3.1.19 高速フーリエ変換(FFT) — 118
      3.1.19.1 時間領域から周波数領域への変換:フーリエ変換 — 118
      3.1.19.2 周波数領域から時間領域への変換:フーリエ変逆換 — 118
      3.1.19.3 プロットのアスペクト比の指定 — 121
      3.1.19.4 フーリエ変換を使用する際の注意 — 121
    3.1.20 複素数の計算 — 122
      3.1.20.1 複素数の平方根 — 122
      3.1.20.2 複素数のノルム — 122
      3.1.20.3 共役複素数 — 122
      3.1.20.4 複素数の偏角(位相) — 123
    3.1.21 行列,ベクトルの計算(線形代数のための計算) — 123
      3.1.21.1 行列の和と積 — 123
      3.1.21.2 単位行列,ゼロ行列,他 — 123
      3.1.21.3 行列の要素を全て同じ値にする — 124
      3.1.21.4 ベクトルの内積 — 125
      3.1.21.5 対角成分,対角行列 — 125
      3.1.21.6 行列の転置 — 126
      3.1.21.7 行列式と逆行列 — 126
      3.1.21.8 固有値と固有ベクトル — 126
      3.1.21.9 行列のランク — 127
      3.1.21.10 複素共役行列 — 127
      3.1.21.11 エルミート共役行列 — 127
      3.1.21.12 ベクトルのノルム — 127
    3.1.22 入出力:配列オブジェクトのファイルI/O — 128
      3.1.22.1 テキストファイルへの保存 — 128
      3.1.22.2 テキストファイルからの読み込み — 130
      3.1.22.3 バイナリファイルへのI/O — 131
      3.1.22.4 データの圧縮保存と読み込み — 132
      3.1.22.5 配列をバイトデータに変換して入出力に使用する — 133
    3.1.23 行列の検査 — 134
      3.1.23.1 全て真,少なくとも1つは真: all,any — 134
    3.1.24 配列を処理するユーザ定義関数の実装について — 135
    3.1.25 行列の計算を応用した計算速度の改善の例 — 137
      3.1.25.1 要素の型によって異なる計算速度 — 138
    3.1.26 画像データの扱い — 138
      3.1.26.1 画素の配列から画像データへの変換(PILライブラリとの連携) — 140
      3.1.26.2 画像データから画素の配列への変換(PILライブラリとの連携) — 140
      3.1.26.3 OpenCVにおける画素の配列 — 141
      3.1.26.4 サンプルプログラム:画像の三色分解 — 142
    3.1.27 図形の描画:matplotlib.patches — 144
      3.1.27.1 四角形,円,楕円,正多角形 — 144
      3.1.27.2 円弧(楕円弧) — 145
      3.1.27.3 ポリゴン — 146
    3.1.28 3次元のポリゴン表示 — 146
    3.1.29 日付,時刻の扱い — 148
      3.1.29.1 datetime64クラス — 148
      3.1.29.2 timedelta64クラス — 148
      3.1.29.3 日付,時刻の応用例 — 149
    3.1.30 その他の機能 — 151
      3.1.30.1 基準以上/以下のデータの抽出 — 151
      3.1.30.2 指定した範囲のデータの抽出 — 153
  3.2 科学技術計算用ライブラリ: SciPy — 155
    3.2.1 信号処理ツール: scipy.signal — 155
      3.2.1.1 基本的な波形の生成 — 155
    3.2.2 WAVファイル入出力ツール: scipy.io.wavfile — 158
      3.2.2.1 WAV形式ファイル出力: write関数 — 158
      3.2.2.2 WAV形式ファイル入力: read関数 — 159
      3.2.2.3 32-bit floating-point のWAV形式サウンドデータ — 159
  3.3 数式処理ライブラリ: SymPy — 161
    3.3.1 モジュールの読込みに関する注意 — 161
    3.3.2 基礎事項 — 161
      3.3.2.1 記号オブジェクトの生成 — 162
      3.3.2.2 数式の簡単化(評価) — 162
      3.3.2.3 式 {\tt f(x,y,…   の構造 (頭部と引数列の取り出し) — 163
      3.3.2.4 定数 — 164
    3.3.3 基本的な数式処理機能 — 164
      3.3.3.1 式の展開 — 164
      3.3.3.2 因数分解 — 164
      3.3.3.3 指定した記号による整理 — 164
      3.3.3.4 約分:分数の簡単化(1  — 165
      3.3.3.5 部分分数 — 165
      3.3.3.6 分数の簡単化(2  — 166
      3.3.3.7 代入(記号の置換) — 166
      3.3.3.8 各種の数学関数 — 166
      3.3.3.9 式の型 — 166
    3.3.4 解析学的処理 — 167
      3.3.4.1 極限 — 167
      3.3.4.2 導関数 — 167
      3.3.4.3 微分操作の遅延実行 — 168
      3.3.4.4 原始関数 — 168
      3.3.4.5 integrateの遅延実行 — 168
      3.3.4.6 定積分 — 169
      3.3.4.7 級数展開 — 169
    3.3.5 各種方程式の求解 — 169
      3.3.5.1 代数方程式の求解 — 169
      3.3.5.2 微分方程式の求解 — 170
      3.3.5.3 階差方程式の求解(差分方程式,漸化式) — 170
    3.3.6 線形代数 — 171
      3.3.6.1 行列の連結 — 171
      3.3.6.2 行列の形状 — 172
      3.3.6.3 行列の要素へのアクセス — 172
      3.3.6.4 行列式 — 173
      3.3.6.5 逆行列 — 173
      3.3.6.6 行列の転置 — 173
      3.3.6.7 ベクトル,内積 — 173
      3.3.6.8 固有値,固有ベクトル — 174
    3.3.7 総和 — 174
    3.3.8 パターンマッチ — 175
    3.3.9 数値計算 — 175
      3.3.9.1 素因数分解 — 175
      3.3.9.2 素数 — 176
      3.3.9.3 近似値 — 177
    3.3.10 書式の変換出力 — 177
      3.3.10.1 \rm \LaTeX  — 177
      3.3.10.2 MathML — 177
    3.3.11 グラフのプロット — 178
      3.3.11.1 グラフを画像ファイルに保存する方法 — 179
4 セキュリティ関連 — 180
  4.1 hashlib — 180
    4.1.1 基本的な使用方法 — 180
  4.2 passlib — 180
    4.2.1 使用できるアルゴリズム — 180
5 プログラムの高速化/アプリケーション構築 — 182
  5.1 Cython — 182
    5.1.1 使用例 — 182
    5.1.2 高速化のための調整 — 184
  5.2 Numba — 185
    5.2.1 基本的な使用方法 — 185
    5.2.2 型指定による高速化 — 186
  5.3 ctypes — 186
    5.3.1 C言語による共有ライブラリ作成の例 — 186
    5.3.2 共有ライブラリ内の関数を呼び出す例 — 187
    5.3.3 引数と戻り値の扱いについて — 187
      5.3.3.1 配列データの受け渡し — 190
  5.4 PyInstaller — 193
    5.4.1 簡単な使用例 — 193
      5.4.1.1 単一の実行ファイルとしてビルドする方法 — 194
6 対話作業環境(JupyterLab) — 195
  6.1 基礎事項 — 195
    6.1.1 起動と終了 — 196
    6.1.2 表示領域の構成と操作方法 — 196
      6.1.2.1 ノートブックの使用例 — 197
      6.1.2.2 カーネル(Kernel)について — 199
    6.1.3 Notebookでのinput関数の実行 — 199
  6.2 Markdownによるコメント表示 — 199
  6.3 使用例 — 201
    6.3.1 MathJaxによるSymPyの式の整形表示 — 201
    6.3.2 IPython.displayモジュールによるサウンドの再生 — 202
7 その他 — 204
  7.1 json:データ交換フォーマットJSONの使用 — 204
    7.1.1 JSONの表記 — 204
    7.1.2 使用例 — 204
      7.1.2.1 JSONデータのファイルI/O — 204
      7.1.2.2 真理値,Noneの扱い — 205
  7.2 urllib:URLに関する処理 — 206
    7.2.1 他バイト文字の扱い(%エンコーディング) — 206
      7.2.1.1 文字コード体系の指定 — 206
  7.3 zenhan:全角⇔半角変換 — 207
  7.4 jaconv:日本語文字に関する各種の変換 — 207

コメントお待ちしています

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)