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 対話モード — 3
      1.4.3.1 ヒストリ — 3
      1.4.3.2 直前の値 — 3
  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.3.1 日本語の変数名の使用 — 9
    2.3.2 変数名に関する注意 — 9
    2.3.3 イコール「=」の連鎖(Multiple Assignment) — 10
    2.3.4 変数の解放(廃棄) — 10
    2.3.5 変数が値を保持する仕組みの概観 — 10
      2.3.5.1 識別値に関する注意事項 — 12
    2.3.6 数値 — 12
      2.3.6.1 整数: int型 — 12
      2.3.6.2 巨大な整数値を扱う際の注意 — 13
      2.3.6.3 浮動小数点数: float型 — 14
      2.3.6.4 アンダースコア「_」を含む数値リテラルの記述 — 15
      2.3.6.5 基数の指定: 2進数,8進数,16進数 — 15
      2.3.6.6 複素数: complex型 — 15
      2.3.6.7 最大値,最小値 — 16
      2.3.6.8 浮動小数点数の誤差と丸め — 17
      2.3.6.9 数学関数 — 17
      2.3.6.10 特殊な値:inf, nan — 19
      2.3.6.11 多倍長精度の浮動小数点数の扱い — 21
      2.3.6.12 分数の扱い — 24
      2.3.6.13 乱数の生成 — 26
    2.3.7 文字列 — 29
      2.3.7.1 エスケープシーケンス — 29
      2.3.7.2 raw文字列(raw string) — 30
      2.3.7.3 複数行に渡る文字列 — 30
      2.3.7.4 文字列の長さ(文字数) — 31
      2.3.7.5 文字列リテラルの連接 — 31
      2.3.7.6 文字列の分解と合成 — 31
      2.3.7.7 文字列の置換 — 33
      2.3.7.8 文字の置換 — 33
      2.3.7.9 英字,数字の判定 — 34
      2.3.7.10 大文字/小文字の変換と判定 — 34
      2.3.7.11 文字列の含有検査 — 34
      2.3.7.12 文字列の検索 — 35
      2.3.7.13 両端の文字の除去 — 37
      2.3.7.14 文字コード,文字の種別に関すること — 37
    2.3.8 真理値(bool型) — 39
    2.3.9 ヌルオブジェクト: None — 40
    2.3.10 型の変換 — 40
      2.3.10.1 各種の値の文字列への変換(str,repr) — 40
    2.3.11 型の検査 — 41
      2.3.11.1 floatの値が整数値かどうかを検査する方法 — 42
    2.3.12 基数の変換 — 42
      2.3.12.1 n進数→10進数 — 42
      2.3.12.2 10進数→n進数 — 43
    2.3.13 ビット演算 — 43
      2.3.13.1 ビット演算の累算代入 — 44
      2.3.13.2 整数値のビット長を求める方法 — 44
    2.3.14 バイト列 — 45
  2.4 データ構造 — 46
    2.4.1 リスト — 46
      2.4.1.1 空リスト — 46
      2.4.1.2 リストの要素へのアクセス — 46
      2.4.1.3 リストの編集 — 47
      2.4.1.4 リストによるスタック,キューの実現: popメソッド — 49
      2.4.1.5 リストに対する検査 — 50
      2.4.1.6 例外処理 — 51
      2.4.1.7 要素の個数のカウント — 51
      2.4.1.8 要素の合計: sum関数 — 52
      2.4.1.9 要素の整列 (1): sortメソッド — 53
      2.4.1.10 要素の整列 (2): sorted関数 — 53
      2.4.1.11 要素の順序の反転 — 54
      2.4.1.12 リストの複製 — 54
      2.4.1.13 リストか否かの判定 — 56
      2.4.1.14 リストの内部に他のリストを展開する方法 — 56
    2.4.2 タプル — 56
      2.4.2.1 リストとタプルの違い — 56
      2.4.2.2 括弧の表記が省略できるケース — 57
      2.4.2.3 特殊なタプル — 57
      2.4.2.4 タプルの要素を整列(ソート)する方法 — 57
      2.4.2.5 タプルか否かの判定 — 58
    2.4.3 セット — 58
      2.4.3.1 セットの要素となるオブジェクト — 58
      2.4.3.2 セットの生成 — 59
      2.4.3.3 セットに対する各種の操作 — 59
      2.4.3.4 集合論の操作 — 61
      2.4.3.5 セットか否かの判定 — 62
      2.4.3.6 frozenset — 62
    2.4.4 辞書型 — 62
      2.4.4.1 空の辞書の作成 — 63
      2.4.4.2 エントリの削除 — 63
      2.4.4.3 getメソッドによる辞書へのアクセス — 63
      2.4.4.4 辞書に対するpop — 64
      2.4.4.5 辞書の更新 — 64
      2.4.4.6 辞書の結合 — 65
      2.4.4.7 辞書を他の辞書の内部に展開する方法 — 65
      2.4.4.8 キーや値の列を取り出す方法 — 66
      2.4.4.9 エントリの数を調べる方法 — 66
      2.4.4.10 リストやタプルから辞書を生成する方法 — 66
      2.4.4.11 辞書の全エントリを列として取り出す方法 — 67
      2.4.4.12 辞書の複製 — 67
      2.4.4.13 エントリの順序 — 67
      2.4.4.14 辞書の整列 — 68
      2.4.4.15 辞書の同値性 — 68
      2.4.4.16 辞書か否かの判定 — 68
    2.4.5 添字(スライス)の高度な応用 — 69
      2.4.5.1 添字の値の省略 — 69
      2.4.5.2 スライスオブジェクト — 69
      2.4.5.3 逆順の要素指定 — 70
      2.4.5.4 不連続な部分の取り出し — 70
    2.4.6 データ構造の変換 — 70
    2.4.7 データ構造の要素を他のデータ構造の中に展開する方法 — 71
    2.4.8 データ構造に沿った値の割当て(分割代入) — 72
      2.4.8.1 応用例: 変数の値の交換 — 73
      2.4.8.2 データ構造の選択的な部分抽出 — 73
    2.4.9 データ構造のシャッフル,ランダムサンプリング — 73
    2.4.10 データ構造へのアクセスの速度について — 74
  2.5 制御構造 — 75
    2.5.1 繰り返し(1): for — 75
      2.5.1.1 イテラブルなオブジェクト — 75
      2.5.1.2 「スイート」の概念 — 75
      2.5.1.3 スイートが1行の場合の書き方 — 76
      2.5.1.4 range関数,rangeオブジェクト — 76
      2.5.1.5 辞書のfor文への応用 — 77
      2.5.1.6 for文におけるelse — 77
      2.5.1.7 forを使ったデータ構造の生成(要素の内包表記) — 78
      2.5.1.8 イテレータ — 78
      2.5.1.9 分割代入を用いたfor文 — 80
      2.5.1.10 zip関数とzipオブジェクト — 80
      2.5.1.11 enumerateによるインデックス情報の付与 — 82
    2.5.2 繰り返し(2): while — 83
    2.5.3 繰り返しの中断とスキップ — 83
    2.5.4 条件分岐 — 84
      2.5.4.1 条件式 — 84
      2.5.4.2 比較演算子の連鎖 — 85
      2.5.4.3 各種の「空」値に関する条件判定 — 86
      2.5.4.4 is演算子による比較 — 87
      2.5.4.5 値の型の判定 — 88
  2.6 入出力 — 89
    2.6.1 標準出力 — 89
      2.6.1.1 出力データの書式設定 — 89
      2.6.1.2 sysモジュールによる標準出力の扱い — 92
    2.6.2 標準入力 — 93
      2.6.2.1 input関数による入力の取得 — 93
      2.6.2.2 sysモジュールによる標準入力の扱い — 94
    2.6.3 ファイルからの入力 — 94
      2.6.3.1 ファイル,ディレクトリのパスについて — 95
      2.6.3.2 扱うファイルのエンコーディング,改行コードの指定 — 96
      2.6.3.3 テキストファイルとバイナリファイルについて — 98
      2.6.3.4 バイト列の扱い — 98
      2.6.3.5 バイト列のコード体系を調べる方法 — 100
      2.6.3.6 指定したバイト数だけ読み込む方法 — 100
      2.6.3.7 ファイルの内容を一度で読み込む方法 — 100
      2.6.3.8 ファイルをイテラブルとして読み込む方法 — 101
      2.6.3.9 readlinesメソッドによるテキストファイルの読み込み — 101
      2.6.3.10 データを読み込む際のファイル中の位置について — 102
    2.6.4 ファイルへの出力 — 102
      2.6.4.1 print関数によるファイルへの出力 — 102
      2.6.4.2 writelinesメソッドによる出力 — 103
      2.6.4.3 出力バッファの書き出し — 103
    2.6.5 標準エラー出力 — 103
    2.6.6 標準入出力でバイナリデータを扱う方法 — 105
    2.6.7 パス(ファイル,ディレクトリ)の扱い:その1 – osモジュール — 105
      2.6.7.1 カレントディレクトリに関する操作 — 105
      2.6.7.2 ホームディレクトリの取得 — 106
      2.6.7.3 ディレクトリ内容の一覧(1) — 106
      2.6.7.4 ディレクトリ内容の一覧(2) — 106
      2.6.7.5 ファイルのサイズの取得 — 107
      2.6.7.6 ファイル,ディレクトリの検査 — 107
      2.6.7.7 ファイル,ディレクトリの削除 — 107
      2.6.7.8 実行中のスクリプトに関する情報 — 107
      2.6.7.9 パスの表現に関すること — 108
    2.6.8 パス(ファイル,ディレクトリ)の扱い:その2 – pathlibモジュール — 109
      2.6.8.1 パスオブジェクトの生成 — 109
      2.6.8.2 カレントディレクトリ,ホームディレクトリの取得 — 109
      2.6.8.3 パスの存在の検査 — 110
      2.6.8.4 ファイル,ディレクトリの検査 — 110
      2.6.8.5 ディレクトリの要素を取得する — 110
      2.6.8.6 ディレクトリ名,ファイル名,拡張子の取り出し — 110
      2.6.8.7 パスの連結 — 111
      2.6.8.8 ファイルシステム毎のパスの表現 — 111
      2.6.8.9 URIへの変換 — 111
      2.6.8.10 ファイルのオープン — 111
      2.6.8.11 ファイル入出力 — 111
      2.6.8.12 ディレクトリの作成 — 112
      2.6.8.13 ファイル,ディレクトリの削除 — 112
    2.6.9 コマンド引数の取得 — 113
    2.6.10 入出力処理の際に注意すること — 113
    2.6.11 CSVファイルの取り扱い: csvモジュール — 113
      2.6.11.1 CSVファイルの出力 — 114
      2.6.11.2 CSVファイルの入力 — 117
  2.7 関数の定義 — 122
    2.7.1 引数について — 122
      2.7.1.1 引数に暗黙値を設定する方法 — 123
      2.7.1.2 仮引数のシンボルを明に指定する関数呼び出し(キーワード引数) — 123
      2.7.1.3 引数の個数が不定の関数 — 123
      2.7.1.4 実引数に`’を記述する方法 — 124       2.7.1.5 キーワード引数を辞書として受け取る方法 — 124       2.7.1.6 実引数に`*’を記述する方法 — 125
      2.7.1.7 引数に与えたオブジェクトに対する変更の影響 — 125
      2.7.1.8 引数に関するその他の事柄 — 127
    2.7.2 変数のスコープ(関数定義の内外での変数の扱いの違い) — 128
    2.7.3 関数の再帰的定義 — 129
      2.7.3.1 再帰的呼び出しの回数の上限 — 129
      2.7.3.2 再帰的呼び出しを応用する際の注意 — 131
    2.7.4 内部関数 — 131
      2.7.4.1 内部関数におけるローカル変数 — 132
      2.7.4.2 内部関数はいつ作成されるのか — 133
      2.7.4.3 内部関数の応用:クロージャ,エンクロージャ — 133
    2.7.5 定義した関数の削除 — 135
  2.8 オブジェクト指向プログラミング — 136
    2.8.1 クラスの定義 — 136
      2.8.1.1 コンストラクタとファイナライザ — 136
      2.8.1.2 インスタンス変数 — 138
      2.8.1.3 メソッドの定義 — 138
      2.8.1.4 クラス変数 — 139
    2.8.2 クラス,インスタンス間での属性の関係 — 141
    2.8.3 setattr,getattr による属性へのアクセス — 142
    2.8.4 組み込みの演算子や関数との連携 — 143
      2.8.4.1 各種クラスのコンストラクタに対するフック — 144
      2.8.4.2 算術演算子,比較演算子,各種関数に対するフック — 145
      2.8.4.3 累算代入演算子に対するフック — 147
    2.8.5 コンテナのクラスを実装する方法 — 147
    2.8.6 イテレータのクラスを実装する方法 — 148
    2.8.7 カプセル化 — 149
      2.8.7.1 変数の隠蔽 — 149
      2.8.7.2 アクセサ(ゲッタ,セッタ) — 150
    2.8.8 オブジェクト指向プログラミングに関するその他の事柄 — 152
      2.8.8.1 クラス変数,インスタンス変数の調査 — 152
      2.8.8.2 クラスの継承関係の調査 — 152
      2.8.8.3 インスタンスのクラスの調査 — 153
      2.8.8.4 属性の調査(プロパティの調査) — 153
      2.8.8.5 多重継承におけるメソッドの優先順位 — 153
      2.8.8.6 静的メソッド(スタティックメソッド) — 155
  2.9 データ構造に則したプログラミング — 156
    2.9.1 map関数 — 156
      2.9.1.1 複数の引数を取る関数のmap — 158
      2.9.1.2 map関数にzipオブジェクトを与える方法 — 158
    2.9.2 lambdaと関数定義 — 159
    2.9.3 filter — 160
    2.9.4 3項演算子としての if~else… — 161
    2.9.5 all, anyによる一括判定 — 161
    2.9.6 高階関数モジュール:functools — 163
      2.9.6.1 reduce — 163
  2.10 代入式 — 164
  2.11 構造的パターンマッチング — 165
    2.11.1 構造的なパターン — 166
    2.11.2 条件付きのパターンマッチング — 167
    2.11.3 クラスのインスタンスに対するパターンマッチング — 167
3 KivyによるGUIアプリケーションの構築 — 169
  3.1 Kivyの基本 — 169
    3.1.1 アプリケーションプログラムの実装 — 169
    3.1.2 GUI構築の考え方 — 169
      3.1.2.1 Widget(ウィジェット) — 170
      3.1.2.2 Layout(レイアウト) — 170
      3.1.2.3 Screen(スクリーン) — 172
    3.1.3 ウィンドウの扱い — 173
    3.1.4 マルチタッチの無効化 — 173
  3.2 基本的なGUIアプリケーション構築の方法 — 174
    3.2.1 イベント処理(導入編) — 174
      3.2.1.1 イベントハンドリング — 174
    3.2.2 アプリケーション構築の例 — 175
    3.2.3 イベント処理(コールバックの登録による方法) — 178
    3.2.4 ウィジェットの登録と削除 — 179
    3.2.5 アプリケーションの開始と終了のハンドリング — 180
  3.3 各種ウィジェットの使い方 — 180
    3.3.1 ラベル:Label — 181
      3.3.1.1 リソースへのフォントの登録 — 182
    3.3.2 ボタン:Button — 183
    3.3.3 テキスト入力:TextInput — 183
    3.3.4 チェックボックス:CheckBox — 184
    3.3.5 進捗バー:ProgressBar — 184
    3.3.6 スライダ:Slider — 184
    3.3.7 スイッチ:Switch — 184
    3.3.8 トグルボタン:ToggleButton — 185
    3.3.9 画像:Image — 185
      3.3.9.1 サンプルプログラム — 185
  3.4 Canvasグラフィックス — 186
    3.4.1 Graphicsクラス — 187
      3.4.1.1 Color — 187
      3.4.1.2 Line — 187
      3.4.1.3 Rectangle — 187
      3.4.1.4 Ellipse — 188
    3.4.2 サンプルプログラム — 188
      3.4.2.1 正弦関数のプロット — 188
      3.4.2.2 各種図形,画像の表示 — 188
    3.4.3 フレームバッファへの描画 — 190
      3.4.3.1 ピクセル値の取り出し — 191
      3.4.3.2 イベントから得られる座標位置 — 191
  3.5 スクロールビュー(ScrollView) — 192
    3.5.1 ウィジェットのサイズ設定 — 193
    3.5.2 マウスのドラッグによるスクロール — 193
  3.6 ウィンドウサイズを固定(リサイズを禁止)する設定 — 193
  3.7 Kivy言語によるUIの構築 — 193
    3.7.1 Kivy言語の基礎 — 194
      3.7.1.1 サンプルプログラムを用いた説明 — 194
      3.7.1.2 PythonプログラムとKvファイルの対応 — 196
  3.8 時間によるイベント — 197
    3.8.1 時間イベントのスケジュール — 197
  3.9 GUI構築の形式 — 197
    3.9.1 スクリーンの扱い: ScreenとScreenManager — 197
      3.9.1.1 ScreenManager — 197
      3.9.1.2 Screen — 198
    3.9.2 アクションバー: ActionBar — 199
    3.9.3 タブパネル: TabbedPanel — 201
    3.9.4 スワイプ: Carousel — 202
4 実用的なアプリケーション開発に必要な事柄 — 204
  4.1 日付と時間に関する処理 — 204
    4.1.1 日付と時刻の取り扱い: datetime モジュール — 204
      4.1.1.1 datetimeオブジェクトの分解と合成 — 204
      4.1.1.2 文字列をdatetimeオブジェクトに変換する方法 — 205
      4.1.1.3 datetimeオブジェクトの差: timedelta — 205
      4.1.1.4 日付,時刻の書式整形 — 206
      4.1.1.5 datetimeのプロパティ — 206
      4.1.1.6 タイムゾーンについて — 207
    4.1.2 timeモジュール — 210
      4.1.2.1 基本的な機能 — 210
      4.1.2.2 日付,時刻を表す文字列表現 — 211
      4.1.2.3 応用例:datetimeオブジェクトとの間の変換 — 212
      4.1.2.4 時間の計測 — 213
      4.1.2.5 プログラムの実行待ち — 215
    4.1.3 timeitモジュール — 216
  4.2 ロケール(locale) — 217
    4.2.1 ロケール設定の確認 — 217
    4.2.2 使用できるロケールの調査 — 218
    4.2.3 その他 — 219
      4.2.3.1 現在のエンコーディングの調査 — 219
      4.2.3.2 通貨の書式整形 — 219
  4.3 文字列検索と正規表現 — 220
    4.3.1 パターンの検索 — 220
      4.3.1.1 正規表現を用いた検索 — 222
      4.3.1.2 検索パターンの和結合 — 224
      4.3.1.3 正規表現を用いたパターンマッチ — 224
      4.3.1.4 行頭や行末でのパターンマッチ — 225
    4.3.2 置換処理: re.sub — 226
      4.3.2.1 複数行に渡る置換処理 — 226
      4.3.2.2 パターンマッチのグループを参照した置換処理 — 227
    4.3.3 文字列の分解への応用: re.split — 227
  4.4 マルチスレッドとマルチプロセス — 228
    4.4.1 マルチスレッド — 228
      4.4.1.1 スレッドの実行状態の確認 — 229
      4.4.1.2 実行中のスレッドのリストを取得する方法 — 230
      4.4.1.3 スレッド間の排他制御 — 230
    4.4.2 マルチプロセス — 233
      4.4.2.1 プロセスごとに実行されるモジュール — 234
      4.4.2.2 プロセスの実行状態の確認 — 234
      4.4.2.3 実行中プロセスのリストを取得する方法 — 235
      4.4.2.4 共有メモリと排他制御 — 235
    4.4.3 concurrent.futures — 242
      4.4.3.1 ProcessPoolExecutor — 242
      4.4.3.2 プロセスの実行状態と戻り値 — 242
      4.4.3.3 同時に実行されるプロセスの個数について — 244
      4.4.3.4 プロセス終了の同期 — 244
    4.4.4 マルチスレッドとマルチプロセスの実行時間の比較 — 245
  4.5 非同期処理: asyncio — 247
    4.5.1 コルーチン — 247
    4.5.2 コルーチンとタスクの違い — 248
      4.5.2.1 複数のタスクの並行実行 — 248
    4.5.3 await によるタスクの一時停止と切替え — 248
    4.5.4 タスク登録の簡便な方法 — 249
    4.5.5 イベントループとrun関数 — 250
      4.5.5.1 スレッド毎に実行されるイベントループ — 250
      4.5.5.2 実行中のイベントループを調べる方法 — 251
    4.5.6 理解を深めるためのサンプル — 251
      4.5.6.1 非同期処理とイベントループの概観 — 252
    4.5.7 スレッドを非同期処理で管理する方法 — 253
    4.5.8 非同期のコンソール入力を実現するためのライブラリ:aioconsole — 255
    4.5.9 永続するイベントループ上でのタスク管理 — 256
      4.5.9.1 永続するイベントループ — 256
      4.5.9.2 タスクの一覧取得とタスクのキャンセル — 257
    4.5.10 非同期のイテレーション — 259
      4.5.10.1 非同期のイテラブル — 259
    4.5.11 非同期のファイル入出力:aiofiles — 260
      4.5.11.1 サンプルプログラム — 261
  4.6 処理のスケジューリング — 263
    4.6.1 sched モジュール — 263
      4.6.1.1 基本的な使用方法 — 263
      4.6.1.2 イベントを独立したスレッドで実行する方法 — 264
      4.6.1.3 イベントの管理 — 266
    4.6.2 schedule モジュール — 266
      4.6.2.1 一定の時間間隔で処理を起動する方法 — 267
      4.6.2.2 指定した時刻に処理を起動する方法 — 268
  4.7 ジェネレータ — 269
    4.7.1 ジェネレータ関数 — 269
    4.7.2 ジェネレータ式 — 270
    4.7.3 ジェネレータの入れ子 — 270
  4.8 モジュール,パッケージの作成による分割プログラミング — 271
    4.8.1 モジュール — 271
      4.8.1.1 単体のソースファイルとしてのモジュール — 271
    4.8.2 パッケージ(ディレクトリとして構成するライブラリ) — 272
      4.8.2.1 モジュールの実行 — 273
    4.8.3 モジュールが配置されているディレクトリの調査 — 273
    4.8.4 __init__.pyについて — 274
  4.9 ファイル内でのランダムアクセス — 276
    4.9.1 ファイルのアクセス位置の指定(ファイルのシーク) — 276
    4.9.2 サンプルプログラム — 276
  4.10 オブジェクトの保存と読込み: pickleモジュール — 278
  4.11 バイナリデータの作成と展開: structモジュール — 280
    4.11.1 バイナリデータの作成 — 280
    4.11.2 バイナリデータの展開 — 281
    4.11.3 バイトオーダーについて — 281
  4.12 バイナリデータをテキストに変換する方法: base64モジュール — 283
    4.12.1 バイト列→Base64データ — 283
    4.12.2 Base64データ→バイト列 — 283
    4.12.3 サンプルプログラム — 283
  4.13 編集可能なバイト列:bytearray — 284
    4.13.1 bytearrayの作成方法 — 284
    4.13.2 他の型への変換 — 285
    4.13.3 ファイルへの出力 — 285
  4.14 execとeval — 286
    4.14.1 名前空間の指定 — 286
    4.14.2 eval関数 — 286
  4.15 collectionsモジュール — 287
    4.15.1 キュー: deque — 287
      4.15.1.1 要素の追加と取り出し: append,pop — 287
      4.15.1.2 要素の順序の回転: rotate — 287
    4.15.2 要素の集計: Counter — 288
      4.15.2.1 出現頻度の順に集計結果を取り出す — 288
    4.15.3 namedtuple — 289
  4.16 itertoolsモジュール — 290
    4.16.1 イテラブルの連結: chain — 290
    4.16.2 無限のカウンタ: count — 290
    4.16.3 イテラブルの繰り返し: cycle — 291
    4.16.4 オブジェクトの繰り返し: repeat — 291
    4.16.5 連続要素のグループ化: groupby — 291
    4.16.6 直積集合: product — 292
    4.16.7 組合せ: combinations — 293
    4.16.8 順列: permutations — 293
  4.17 列挙型: enumモジュール — 294
    4.17.1 Enum型 — 294
    4.17.2 定数の取り扱いを実現する方法の例 — 295
    4.17.3 IntEnum — 296
    4.17.4 auto関数によるEnum要素への値の割り当て — 296
      4.17.4.1 非数値要素へのauto関数による値の割り当て(参考事項) — 297
  4.18 例外(エラー)の処理 — 298
    4.18.1 エラーメッセージをデータとして取得する方法: tracebackモジュール — 298
    4.18.2 例外を発生させる方法 — 298
    4.18.3 例外オブジェクト — 299
      4.18.3.1 例外オブジェクトのクラス階層 — 300
  4.19 使用されているシンボルの調査 — 300
  4.20 with構文 — 301
  4.21 デコレータ — 305
    4.21.1 引数を取るデコレータ — 306
  4.22 データ構造の整形表示: pprintモジュール — 308
  4.23 処理環境に関する情報の取得 — 309
    4.23.1 Pythonのバージョン情報の取得 — 309
    4.23.2 platformモジュールの利用 — 309
    4.23.3 実行中のプログラムのPIDの取得 — 310
    4.23.4 環境変数の参照 — 310
  4.24 ファイル,ディレクトリに対する操作: shutil モジュール — 312
    4.24.1 ファイルの複製 — 312
    4.24.2 ディレクトリ階層の複製 — 312
    4.24.3 書庫ファイル(アーカイブ)の取り扱いと圧縮処理に関すること — 312
      4.24.3.1 書庫(アーカイブ)の作成 — 313
      4.24.3.2 書庫(アーカイブ)の展開 — 313
  4.25 ZIP書庫の扱い: zipfileモジュール — 313
    4.25.1 ZIP書庫ファイルを開く — 313
    4.25.2 書庫へのメンバの追加 — 314
    4.25.3 書庫の内容の確認 — 314
    4.25.4 書庫のメンバの読み込み — 314
    4.25.5 書庫の展開 — 315
      4.25.5.1 パスワードで保護されたZIP書庫へのアクセス — 315
  4.26 コマンド引数の扱い: argparseモジュール — 316
    4.26.1 コマンド引数の形式 — 316
    4.26.2 使用方法 — 316
      4.26.2.1 オプション引数の設定 — 316
      4.26.2.2 位置引数の設定 — 317
      4.26.2.3 コマンドラインの解析処理 — 317
    4.26.3 サンプルプログラムに沿った説明 — 317
      4.26.3.1 ヘルプ機能 — 318
      4.26.3.2 コマンド引数の型の指定 — 318
    4.26.4 サブコマンドの実現方法 — 319
  4.27 スクリプトの終了(プログラムの終了) — 320
    4.27.1 sys.exit 関数 — 320
    4.27.2 os._exit 関数 — 321
    4.27.3 スクリプト終了時に実行する処理: atexitモジュール — 321
  4.28 Pythonの型システム — 322
    4.28.1 型の階層(クラス階層) — 322
      4.28.1.1 スーパークラス,サブクラスを調べる方法 — 323
5 TCP/IPによる通信 — 325
  5.1 socketモジュール — 325
    5.1.1 ソケットの用意 — 325
    5.1.2 サーバ側プログラムの処理 — 325
    5.1.3 クライアント側プログラムの処理 — 326
    5.1.4 送信と受信 — 326
    5.1.5 サンプルプログラム:最も基本的な通信 — 326
    5.1.6 実用的な通信機能を実現する方法 — 328
      5.1.6.1 socketライブラリとasyncioライブラリの併用 — 328
      5.1.6.2 asyncioライブラリのみで通信を実現する方法 — 330
      5.1.6.3 通信の処理において注意すべき例外 — 333
  5.2 WWWコンテンツ解析 — 334
    5.2.1 requestsライブラリ — 334
      5.2.1.1 リクエストの送信に関するメソッド — 334
      5.2.1.2 取得したコンテンツに関するメソッド — 334
      5.2.1.3 Sessionオブジェクトに基づくアクセス — 335
    5.2.2 Beautiful Soupライブラリ — 336
      5.2.2.1 BSにおけるHTMLコンテンツの扱い — 336
6 外部プログラムとの連携 — 338
  6.1 外部プログラムを起動する方法 — 338
    6.1.1 標準入出力の接続 — 338
      6.1.1.1 外部プログラムの標準入力のクローズ — 341
    6.1.2 非同期の入出力 — 341
    6.1.3 外部プロセスとの同期(終了の待機) — 343
    6.1.4 外部プログラムを起動する更に簡単な方法 — 343
7 サウンドの入出力 — 345
  7.1 基礎知識 — 345
  7.2 WAV形式ファイルの入出力:waveモジュール — 345
    7.2.1 WAV形式ファイルのオープンとクローズ — 345
      7.2.1.1 WAV形式データの各種属性について — 346
    7.2.2 WAV形式ファイルからの読込み — 346
    7.2.3 サンプルプログラム — 346
    7.2.4 量子化ビット数とサンプリング値の関係 — 347
    7.2.5 読み込んだフレームデータの扱い — 347
    7.2.6 WAV形式データを出力する例(1):リストからWAVファイルへ — 349
    7.2.7 WAV形式データを出力する例(2):NumPyの配列からWAVファイルへ — 350
    7.2.8 サウンドのデータサイズに関する注意点 — 350
  7.3 サウンドの入力と再生:PyAudioライブラリ — 352
    7.3.1 ストリームを介したサウンド入出力 — 352
    7.3.2 WAV形式サウンドファイルの再生 — 353
      7.3.2.1 サウンド再生の終了の検出 — 355
    7.3.3 音声入力デバイスからの入力 — 355
A Pythonに関する情報 — 358
  A.1 Pythonのインターネットサイト — 358
  A.2 Pythonのインストール作業の例 — 358
    A.2.1 PSF版インストールパッケージによる方法 — 358
    A.2.2 Anacondaによる方法 — 359
  A.3 Python起動のしくみ — 360
    A.3.1 PSF版Pythonの起動 — 360
    A.3.2 Anaconda Navigatorの起動 — 360
    A.3.3 Anaconda Promptの起動 — 360
      A.3.3.1 condaコマンドによるPython環境の管理 — 362
  A.4 PIPによるライブラリ管理 — 362
    A.4.1 PIPコマンドが実行できない場合の解決策 — 363
B Kivyに関する情報 — 364
  B.1 Kivy利用時のトラブルを回避するための情報 — 364
    B.1.1 Kivyが使用する描画APIの設定 — 364
    B.1.2 SDLについて — 364
  B.2 GUIデザインツール — 364
C Tkinter:基本的なGUIツールキット — 365
  C.1 基本的な扱い方 — 365
    C.1.1 使用例 — 366
      C.1.1.1 ウィンドウサイズ変更の可否の設定 — 367
    C.1.2 ウィジェットの配置 — 367
  C.2 各種のウィジェット — 369
    C.2.1 チェックボタンとラジオボタン — 369
      C.2.1.1 Variableクラス — 369
    C.2.2 エントリ(テキストボックス)とコンボボックス — 371
      C.2.2.1 プログラムの終了 — 372
    C.2.3 リストボックス — 372
    C.2.4 テキスト(文字編集領域)とスクロールバー — 374
    C.2.5 スケール(スライダ)とプログレスバー — 375
      C.2.5.1 Variableクラスのコールバック関数設定 — 376
  C.3 メニューの構築 — 377
  C.4 Canvasの描画 — 378
    C.4.1 描画メソッド(一部) — 378
      C.4.1.1 使用できるフォントを調べる方法 — 379
    C.4.2 図形の管理 — 381
  C.5 イベントハンドリング — 383
    C.5.1 時間を指定した関数の実行 — 385
  C.6 複数のウィンドウの表示 — 386
  C.7 ディスプレイやウィンドウに関する情報の取得 — 387
  C.8 メッセージボックス(messagebox) — 388
    C.8.1 アプリケーション終了のハンドリング — 389
  C.9 ウィジェットの親,子を調べる方法 — 390
D curses — 391
  D.1 curses使用の流れ — 392
  D.2 画面に対する出力,制御 — 392
    D.2.1 色の設定と適用 — 392
    D.2.2 装飾の適用 — 393
    D.2.3 テキストカーソルの設定 — 393
    D.2.4 画面の消去,更新 — 393
    D.2.5 警告表現 — 393
  D.3 キーボード入力 — 395
    D.3.1 文字列の入力 — 395
    D.3.2 rawモード入力 — 395
  D.4 ウィンドウのリサイズ — 396
  D.5 画面の内容の採取 — 398
    D.5.1 文字コードや属性情報の採取 — 398
    D.5.2 画面の中の文字列の採取 — 399
E psutilライブラリ — 401
  E.1 CPU関連の情報の取得 — 401
    E.1.1 CPUの構成:cpu_count関数 — 401
    E.1.2 CPUのクロック周波数:cpu_freq関数 — 401
    E.1.3 CPU時間:cpu_times関数 — 401
    E.1.4 CPU使用率:cpu_percent関数 — 402
  E.2 メモリ関連の情報の取得 — 402
    E.2.1 仮想記憶の状況:virtual_memory関数 — 402
    E.2.2 スワップ領域の使用状況:swap_memory関数 — 402
  E.3 ディスク関連の情報の取得 — 403
    E.3.1 パーティションの構成:disk_partitions関数 — 403
    E.3.2 ディスクの使用状況:disk_usage関数 — 404
    E.3.3 ディスクのI/O状況:disk_io_counters関数 — 404
  E.4 ネットワーク関連の情報の取得 — 404
    E.4.1 ネットワークのI/O状況:net_io_counters関数 — 404
    E.4.2 現在の通信状況:net_connections関数 — 405
  E.5 プロセス関連の情報の取得 — 406
    E.5.1 実行中のプロセス:pids関数 — 406
    E.5.2 Process クラス — 407
      E.5.2.1 メモリの使用状況の調査:memory_info — 407
      E.5.2.2 CPU使用率:cpu_percent — 408
      E.5.2.3 CPU時間:cpu_times — 409
      E.5.2.4 開いているファイルの調査:open_files — 409
      E.5.2.5 プロセスの通信状況:net_connections — 409
      E.5.2.6 プロセスの終了:terminate — 410
    E.5.3 サンプルプログラム:プロセスの監視 — 410
F ライブラリの取り扱いについて — 412
  F.1 ライブラリの読込みに関すること — 412
    F.1.1 ライブラリ読込みにおける別名の付与 — 412
    F.1.2 接頭辞を省略するためのライブラリの読込み — 412
      F.1.2.1 接頭辞を省略する際の注意(名前の衝突) — 413
    F.1.3 ライブラリのパス: sys.path — 413
    F.1.4 既に読み込まれているライブラリの調査: sys.modules — 413
    F.1.5 The Zen of Python — 414
  F.2 ライブラリ情報の取得 — 414
    F.2.1 pkg_resources による方法 — 414
    F.2.2 pkgutil,importlib による方法 — 415
  F.3 各種ライブラリの紹介 — 417
G 対話モードを使いやすくするための工夫 — 418
  G.1 警告メッセージの抑止と表示 — 418
  G.2 メモリの使用状態の管理 — 419
    G.2.1 オブジェクトのサイズの調査 — 419
H 文書化文字列と関数アノテーション — 421
  H.1 関数アノテーション(Function Annotations) — 422
I サンプルプログラム — 423
  I.1 リスト/セット/辞書のアクセス速度の比較 — 423
    I.1.1 スライスに整数のインデックスを与える形のアクセス — 423
    I.1.2 メンバシップ検査に要する時間 — 424
  I.2 ライブラリ使用の有無における計算速度の比較 — 427
  I.3 os.walk関数の応用例 — 430
  I.4 pathlibの応用例 — 431
  I.5 浮動小数点数と2進数の間の変換 — 432
    I.5.1 mpmathを用いた例 — 433
  I.6 全てのUnicode文字の列挙 — 434
J その他 — 435
  J.1 演算子の優先順位 — 435
  J.2 アスキーコード表 — 436

【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

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

コメントを残す

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

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