Pythonの覚えておきたい関数やクラス、モジュール
投稿日: | |
---|---|
タグ: |
本稿はPython3の言語仕様とは別に覚えておきたい関数やモジュールについてのメモ。
組み込み関数
- map(func, iterable, ...)
-
第二引数以降で指定したコンテナから同じ添字番号のものを順に抜き出し、それをfuncに引数として与え、その結果を返すジェネレータ。funcに与える引数は、mapの第2引数のコンテナに属するオブジェクトがfuncの第1引数に、mapの第3引数のコンテナに属するオブジェクトがfuncの第2引数といった感じで、mapの第n引数のコンテナに属するオブジェクトがfuncの第n-1引数に与えられる。
mapはPython2ではジェネレータではなく、コンテナを返す関数である。def func(x, y, z): return x * y * z print(list(map(func, [1, 2, 3], [2, 4, 6], [3, 6, 9])))
- filter(func, iterable)
-
iterableが返すオブジェクト群を順にfuncに引数として与えて評価し、真となるオブジェクトを返すジェネレータ。これを利用すると例えば次のように10から50の範囲の素数を検索するコードを記述することができる。
このコードはこのような結果を標準出力に出力する。def isPrime(x): for y in range(2, x-1): if x%y==0: return False return True print(list(filter(isPrime, range(10, 50))))
[11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
filterもまたPython2ではジェネレータではなく、コンテナを返す関数である。 - zip(*iterable)
-
行列の行と列を交換するような関数。複数のコンテナを受け取り、同じ添字を1つのタプルを順に返すジェネレータ。
例えばこのようなコードがあったとする。
これは次のように標準出力に出力される。print(list(zip([1,2,3], [4,5,6])))
[(1, 4), (2, 5), (3, 6)]
- isinstance(object, class-or-type-or-tuple)
-
指定したオブジェクトが指定したクラスかその継承クラスである場合にTrueを、それ以外の場合にFalseを返す。また、クラスはタプルの中に記述することで複数指定できる。
isinstance(False, bool)
isinstance(False, (int, str))
- id(object)
- オブジェクトの識別値(ID)を返す。
算術
- abs(number)
- 絶対値を返す関数
- re
-
正規表現を扱うためのモジュール。
- 一致
-
import re r = re.match("h.*o", "hello") if r is None: print("Not match") else: print("match")
- 抽出
>>> import re >>> r = re.match("^\s*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)\s*$", "apple, 100, 5") >>> if r is not None: ... r.group(0) ... r.group(1) ... r.group(2) ... r.group(3) ... 'apple, 100, 5' 'apple' '100' '5'
- 置き換え
-
>>> re.sub("([^ ,]+)", "hoge", "foo, bar") 'hoge, hoge'
- sys
-
システム系のモジュール。
- コマンドライン引数の取得
import sys print("program name: " + sys.argv[0]) print(" argument 1 : " + sys.argv[1]) print(" argument 2 : " + sys.argv[2])
- 標準出力
- 標準エラー出力
-
これを利用すると次のようにリダイレクトができる。import sys sys.stderr.write("error message\n")
import sys out = sys.stdout f = open("/tmp/test.txt", "w") sys.stdout = f cnt = sys.stdout.write("fuga\n") print("hoge") f.close()
- exit
import sys sys.exit(0)
- os
-
システムコールのモジュール。
- ディレクトリの生成
import os os.mkdir("/tmp/hoge", 755)
- exec系関数
- dup
- pipe
- fork
import sys import os r, w = os.pipe() pid = os.fork() if pid: os.close(w) out = os.read(r, 10) while True: buf = os.read(r, 10) if buf: out += buf else: break os.write(sys.stdout.fileno(), out) os.close(r) else: os.close(r) os.dup2(w, sys.stdout.fileno()) os.close(w) os.execlp("ls", "ls", "-l")
モジュール
以下にいくつか便利なモジュールの使い方を説明する。詳細は情報はhelpコマンドによるドキュメントを参照されたし。
特殊関数
編集中