差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| python:introduction [2020/03/08 12:23] – [ループ] watalu | python:introduction [2020/03/08 17:08] (現在) – [Python 3を使いましょう] watalu | ||
|---|---|---|---|
| 行 3: | 行 3: | ||
| === Pythonはインタプリタ === | === Pythonはインタプリタ === | ||
| - | 次の5行は、Pythonで書いたHello World!です。 | + | 次の5行は、Pythonで書いたHello, World!です。 |
| < | < | ||
| def main(): | def main(): | ||
| - | print(" | + | print(" |
| if __name__ == " | if __name__ == " | ||
| 行 22: | 行 22: | ||
| Python言語で書かれたプログラムの実行には必ず、pythonというコマンドを介する必要があります。これはPython言語のインタプリタ(処理系)です。 | Python言語で書かれたプログラムの実行には必ず、pythonというコマンドを介する必要があります。これはPython言語のインタプリタ(処理系)です。 | ||
| + | === Python 3を使いましょう === | ||
| + | |||
| + | Python言語は大きく4世代に分類できます。 | ||
| + | |||
| + | * バージョン0: | ||
| + | * バージョン1: | ||
| + | * バージョン2: | ||
| + | * バージョン3: | ||
| + | |||
| + | バージョン2の開発中に様々な拡張が行われたようです。そして[[https:// | ||
| + | |||
| + | そのため、Python言語は2種類ある、と言えます。 | ||
| + | |||
| + | バージョン2のために書かれた多くのライブラリやソースコードは、バージョン3では動きません。しかし、多くのユーザはバージョン2を使い続け、教科書や教育内容、また多くのモジュールやパッケージもバージョン2を支持し続けつつ、バージョン3の開発も進めてきました。開発リソースの分割が原因で、バージョン3への移行はかなり遅れたようにも思います。 | ||
| + | |||
| + | * NumPyは[[https:// | ||
| + | * TensorFlowは2017年2月に公開されたバージョン1、2019年9月に公開されたバージョン2、いずれもPython 2をサポートしています。 | ||
| + | * Scikit-learnは2019年3月まで開発が続いたバージョン0.20までPython 2.7と3.4をサポートしていましたが、2019年5月に公開されたバージョン0.21以降はPython 3.5以降のみをサポートしています。 | ||
| + | * Anacondaは今でも、Python 2と3それぞれのディストリビューションを提供しています。 | ||
| + | |||
| + | データサイエンスや機械学習を目的にPythonを新たに学ぶ人は、2020年以降はPython 2を学ぶ必要はなく、Python 3を学ぶのが良さそうです。テキストもPython 3に対応したものだけを探して大丈夫です。手に取った本がどちらのバージョンに対応しているかは、Python 2と3とでprint文が異なるので、すぐにわかるはずです。 | ||
| + | |||
| + | < | ||
| + | # Python 2のprint文 | ||
| + | print " | ||
| + | # Python 3のprint文 | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | そう、昔はprintは文で、関数ではなかったのです。 | ||
| === Python本体と標準ライブラリとサードパーティライブラリ === | === Python本体と標準ライブラリとサードパーティライブラリ === | ||
| 行 90: | 行 120: | ||
| dict | dict | ||
| </ | </ | ||
| - | |||
| == 配列 == | == 配列 == | ||
| 行 100: | 行 129: | ||
| タプルは更新不可能な配列です。 | タプルは更新不可能な配列です。 | ||
| 辞書はPerlの連想配列と似ていますが、数値と文字列を区別するキーを持ちます。 | 辞書はPerlの連想配列と似ていますが、数値と文字列を区別するキーを持ちます。 | ||
| + | |||
| + | == スライシング == | ||
| + | |||
| + | |||
| == 条件分岐 == | == 条件分岐 == | ||
| 行 147: | 行 180: | ||
| == 内包表記 == | == 内包表記 == | ||
| + | リスト、タプル、辞書などから、新しいリストや辞書を作る Python 独自の記法 | ||
| + | |||
| + | リストの内包表記 | ||
| < | < | ||
| + | [式 for 変数 in イテレート可能なオブジェクト] | ||
| + | </ | ||
| + | はif条件文も使える。 | ||
| + | < | ||
| + | [式 for 変数 in イテレート可能なオブジェクト if 条件式] | ||
| + | </ | ||
| + | ネストも可能。 | ||
| + | < | ||
| + | [式 for 変数名1 in イテラブルオブジェクト1 | ||
| + | for 変数名2 in イテラブルオブジェクト2 | ||
| + | for 変数名3 in イテラブルオブジェクト3] | ||
| </ | </ | ||
| + | |||
| + | 集合の内包表記 | ||
| + | < | ||
| + | {値 for 変数 in イテレート可能なオブジェクト} | ||
| + | </ | ||
| + | はif条件文は使えない。 | ||
| + | |||
| + | |||
| + | 辞書の内包表記 | ||
| + | < | ||
| + | {キー:値 for 変数 in イテレート可能なオブジェクト} | ||
| + | </ | ||
| + | はif条件文は使えない。 | ||
| == zipとenumerate == | == zipとenumerate == | ||
| + | |||
| + | zipは、2次元配列がないPythonならではの機能で、長さの同じイテラブルを組み合わせることができる。 | ||
| < | < | ||
| + | keys = [' | ||
| + | values = [1, 2, 3] | ||
| + | {k: v for k, v in zip(keys, values)} | ||
| </ | </ | ||
| + | enumerateも同様。 | ||
| + | |||
| + | < | ||
| + | l_str1 = [' | ||
| + | l_str2 = [' | ||
| + | |||
| + | l_zip = [(s1, s2) for s1, s2 in zip(l_str1, l_str2)] | ||
| + | print(l_zip) | ||
| + | # [(' | ||
| + | source: list_comprehension.py | ||
| + | l_zip = [] | ||
| + | for s1, s2 in zip(l_str1, l_str2): | ||
| + | l_zip.append((s1, | ||
| + | |||
| + | print(l_zip) | ||
| + | # [(' | ||
| + | source: list_comprehension.py | ||
| + | enumerate()の例。 | ||
| + | |||
| + | l_enu = [(i, s) for i, s in enumerate(l_str1)] | ||
| + | print(l_enu) | ||
| + | # [(0, ' | ||
| + | </ | ||
| + | |||
| + | == ジェネレータ式 == | ||
| + | |||
| + | |||
| + | == ラムダ式 == | ||
| === 標準ライブラリの例 === | === 標準ライブラリの例 === | ||