Python3.6.3チュートリアル写経20171113

5.5. 辞書型~6.1.1. モジュールをスクリプトとして実行する をやった。 以下メモ。

  • 辞書のキーにできるのは、イミュータブルな型だけ。すなわち、文字列、数値、タプル。
  • dict(ペアのリスト) (ペアのリスト->辞書)の逆は my_dict.items() (辞書->ペアのリスト)
  • キーのリスト: list(my_dict.keys())
  • 値のリスト: list(my_dict.values())
In [1]: fruits = {'apple': 3, 'banana': 2, 'peach': 4}

In [2]: for k, v in fruits.items():
   ...:     print(k, v)
   ...:     
apple 3
banana 2
peach 4
  • シーケンスの生成の仕方

    • ソートされたシーケンス: sorted(シーケンス型)
    • 逆順にしたシーケンス: reversed(シーケンス型)
    • インデックス(0-origin)とのペアにされたシーケンス: enumerate(シーケンス型)
    • タプルにされたシーケンス: zip(シーケンス型, シーケンス型, ...)
    • 型変換: list(シーケンス型), set(シーケンス型), tuple(シーケンス型)
  • 論理演算子は、not, or, and

  • モジュールは、モジュール名.py というファイルに、関数を定義することで作成する
  • モジュールのインポートの仕方、「import モジュール名」と「from モジュール名 import シンボル名」
  • 前者は、インポート先のシンボルテーブルにモジュール名しか入らないため、モジュール名.関数名 で関数を参照する
  • 後者は、インポート先のシンボルテーブルにimportの後ろのシンボルが入るため、シンボルをモジュール名無しで参照できる。「import モジュール名 *」という書き方は可読性を低くするので非推奨
  • モジュールの最後にスクリプトとして実行するプログラムが書ける(実行コマンド: $ python fib.py 50)
def fib(n):
    """Write Fibonacci series up to n."""
    a, b = 0, 1
    while b < n:
        print(b, end=' ')
        a, b = b, a+b
    print()

def fib2(n):
    """Return Fibonacci series up to n."""
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result

if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))