Pythonのよく使うコードスニペット
はじめに
配列
配列の定義
data = ['a', 'b', 'c']
要素の追加
data = [ ... ]
data.append(100)
要素のインデックスの取得
data = [ ... ] index = data.index(100) # may raise ValueError
繰り返し
data = [ ... ] for item in data: pass
繰り返し(インデックスあり)
data = [ ... ] for index, item in enumerate(data): pass
ディクショナリ
ディクショナリの定義
data = {'a': 1, 'b': 2, 'c': 3}
キーでソート
data = { ... } sorted_data = dict(sorted(data.items(), key=lambda item: item[0]))
繰り返し (キー)
data = { ... } for key in data.keys(): pass
繰り返し (値)
data = { ... } for value, value in data.values(): pass
繰り返し (キーと値)
data = { ... } for key, value in data.items(): pass
クラス
クラス定義の雛形
class MyClass: def __init__(self, data): self.data = data def my_method(self): return self.data
継承
class BaseClass: def __init__(self, data): self.data = data class MyClass(BaseClass): def __init__(self, data, exstra_data): super().__init__(data) self.exstra_data = exstra_data
ヒアドキュメント
普通のヒアドキュメント
data = '''abc def ghi'''
可読性を意識したヒアドキュメント
末尾の[1:-1]
で前後の余分な空行を削除している。
data = ''' abc def ghi '''[1:-1]
URL
URLの構築 (普通のタプルを利用)
import urllib.parse parts = ( 'http', 'localhost:8080', '/foo/bar', '', urllib.parse.urlencode({'a b': 'c&b', 'e/f': 'g?h'}), 'zz' ) url = urllib.parse.urlunparse(parts) print(url) # http://localhost:8080/foo/bar?a+b=c%26b&e%2Ff=g%3Fh#zz
URLの構築 (辞書から変換した名前付きタプルを利用)
記述量は多いが「タプルの何番目の要素が何だっけ」と迷わずにすむ。
import urllib.parse import collections parts = { 'scheme': 'http', 'netloc': 'localhost:8080', 'path': '/foo/bar', 'params': '', 'query': urllib.parse.urlencode({'a b': 'c&b', 'e/f': 'g?h'}), 'fragment': 'zz' } url = urllib.parse.urlunparse(collections.namedtuple('_', parts.keys())(**parts)) print(url) # http://localhost:8080/foo/bar?a+b=c%26b&e%2Ff=g%3Fh#zz
URLエンコーディング
ワンライナーで標準入力をエンコード
以下は標準入力からa&b
を読み込んでエンコードする例。
$ echo -n "a&b" | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))" a%26b
ワンライナーで標準入力をデコード
以下は標準入力からa%26b
を読み込んでデコードする例。
$ echo -n "a%26b" | python3 -c "import urllib.parse, sys; print(urllib.parse.unquote(sys.stdin.read()))" a&b
ワンライナーで引数をエンコード
以下は引数a&b
をエンコードする例。
$ python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "a&b" a%26b
ワンライナーで引数をデコード
以下は引数a%26b
をデコードする例。
$ python3 -c "import urllib.parse, sys; print(urllib.parse.unquote(sys.argv[1]))" "a%26b" a&b
参考
- How to Sort a Dictionary in Python?