3.2. Python の基本事項¶
PySIMPLE を利用するに当たって,基本となる Python の文法を簡単に説明します. Python の詳細な文法については 公式マニュアル をご確認ください.
3.2.1. 数値,文字列¶
整数型の int,浮動小数点型の float,文字列型の str などが存在します. 文字列における「'」と「"」は同じです.:
>>> 2 + 3
5
>>> 'ほげ'
'ほげ'
>>> "ほげ"
'ほげ'
半角空白文字(半角スペース)と改行はモデル中では任意に用いる事ができます. 全角空白文字(全角スペース)を用いる事はできません.
「#」から行末まではコメントになります.:
>>> 3.14 # 円周率
3.14
「変数名= オブジェクト」でオブジェクトを保持する変数を作成します. 一度作成した変数に再度,異なるオブジェクトを代入することもできます.:
>>> x = 3.14
>>> x
3.14
>>> x = 'pi'
>>> x
'pi'
3.2.2. データ構造¶
3.2.2.1. リスト¶
リストは様々なオブジェクト含むことができるデータ構造です.[
と ]
で囲んで ,
で要素を並べます.:
>>> 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'
3.2.2.2. タプル¶
タプルはリストと似ていますが,値を変えることができません.
>>> tpl = (3, 'spam', 3.14, [0, 'ham'])
>>> tpl[1]
'spam'
>>> tpl[1] = 'egg'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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)
3.2.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}
3.2.3. 組み込み関数¶
最初から使うことのできる関数は他にもいろいろあります. ここでは PySIMPLE を記述する上で有用なものを幾つか紹介します.
3.2.3.1. 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 のとおり要素が追加されました.
3.2.3.2. 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]
3.2.3.3. 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 番目…を取り出した列を作ります.