.. -*- coding: utf-8 -*- ================= Python の基本事項 ================= PySIMPLE を利用するに当たって,基本となる Python の文法を簡単に説明します. Python の詳細な文法については `公式マニュアル `_ をご確認ください. 数値,文字列 ============ 整数型の int,浮動小数点型の float,文字列型の str などが存在します. 文字列における「'」と「"」は同じです.:: >>> 2 + 3 5 >>> 'ほげ' 'ほげ' >>> "ほげ" 'ほげ' 半角空白文字(半角スペース)と改行はモデル中では任意に用いる事ができます. 全角空白文字(全角スペース)を用いる事はできません. 「#」から行末まではコメントになります.:: >>> 3.14 # 円周率 3.14 「変数名= オブジェクト」でオブジェクトを保持する変数を作成します. 一度作成した変数に再度,異なるオブジェクトを代入することもできます.:: >>> x = 3.14 >>> x 3.14 >>> x = 'pi' >>> x 'pi' データ構造 =========== リスト ------ リストは様々なオブジェクト含むことができるデータ構造です.``[`` と ``]`` で囲んで ``,`` で要素を並べます.:: >>> lst = [3, 'spam', 3.14, [0, 'ham']] >>> lst [3, 'spam', 3.14, [0, 'ham']] リストに対して ``[index]`` で index 番目の要素を取り出したり,修正することができます. ただし,最初の要素を 0 番目と数えます.:: >>> lst[1] 'spam' >>> lst[1] = 'egg' >>> lst[1] 'egg' タプル ------ タプルはリストと似ていますが,値を変えることができません. >>> tpl = (3, 'spam', 3.14, [0, 'ham']) >>> tpl[1] 'spam' >>> tpl[1] = 'egg' Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment タプルはリストと異なり ``()`` で囲む必要がない場合もあるのですが,慣れない内は括弧を付けるようにしておきましょう. また,リストとタプルは list 関数, tuple 関数によりそれぞれ相互変換できます.:: >>> tpl = (1, 2, 3) >>> lst = list(tpl) >>> lst [1, 2, 3] >>> tuple(list(tpl)) (1, 2, 3) 辞書 ---- 辞書は対応付けのためのデータ構造です. **キー** と **値** を ``:`` で挟み ``,`` で並べて ``{`` と ``}`` で囲みます.:: >>> dct = {'spam': 1, 'ham': 2} >>> dct['ham'] 2 この場合,キーは 'spam' と 'ham',値は 1 と 2 です. 次の例はもう少し複雑で,キーがタプルになっています.:: >>> dct = {(1, 2): 3, (1, 3): 4} >>> dct[(1,3)] 4 >>> dct[1,3] 4 dict 関数を用いることでタプルの列から辞書を作ることもできます.:: >>> dct = dict([('X', 1), ('Y', 2), ('Z', 3)]) >>> dct {'X': 1, 'Y': 2, 'Z': 3} 組み込み関数 ============ 最初から使うことのできる関数は他にもいろいろあります. ここでは PySIMPLE を記述する上で有用なものを幾つか紹介します. print, help, dir ---------------- print 関数は何でも表示してくれます. インタプリタでは明示的に記述しなくても大丈夫ですが,ファイルに記述する場合は, 表示させたい箇所に print 関数を挟みましょう.:: x = 2 x = x + 3 print(x) # 5 help 関数はオブジェクトの使い方を教えてくれます. print 関数の使い方を見てみましょう.:: >>> help(print) Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. dir 関数は属性のリストを返します.リストの属性一覧を見てみましょう.: >>> lst = [1, 2] >>> dir(lst) ['__add__', .., 'append', ..] append という属性を持っていることが分かります.この使い方を調べて実際に使ってみましょう. 属性はオブジェクトに対して ``.`` で続けます.:: >>> help(lst.append) Help on built-in function append: append(...) method of builtins.list instance L.append(object) -> None -- append object to end >>> lst.append(3) >>> lst [1, 2, 3] help のとおり要素が追加されました. range ----- range 関数は等差数列を作るための関数です. range(stop) で 0 から stop-1 までの等差数列を, range(start, stop) で start から stop-1 までの等差数列を作ります.:: >>> list(range(5)) [0, 1, 2, 3, 4] >>> list(range(2, 5)) [2, 3, 4] zip --- zip 関数を使うと 2 つのリスト等から辞書をつくるときに便利です.:: >>> list(zip(['X', 'Y', 'Z'], [1, 2, 3])) [('X', 1), ('Y', 2), ('Z', 3)] >>> dict(zip(['X', 'Y', 'Z'], [1, 2, 3])) {'X': 1, 'Y': 2, 'Z': 3} zip 関数は引数それぞれの 1 番目,2 番目…を取り出した列を作ります.