自分用メモ
リスト内包表記
リスト内包表記が便利なのか面倒なのか良く分からないので取りあえずメモ
コード
# if list = [n for n in range( 10 ) if n % 2 == 0] print u'\nif' print list # if-else list = [i if (i % 2 == 0) else str(i) for i in range(10)] print u'\nif-else' print list # loop:zip print u'\nloop:zip' list1 = [1,2,3] list2 = [4,5,6] for (a, b) in zip( list1, list2 ): print a,b # loop:enumerate print u'\nloop:enumerate' list1 = ['a','b','c'] for (i, x) in enumerate( list1 ): print i,x
結果
if [0, 2, 4, 6, 8] if-else [0, '1', 2, '3', 4, '5', 6, '7', 8, '9'] loop:zip 1 4 2 5 3 6 loop:enumerate 0 a 1 b 2 c
その他
リスト内包表記によるリスト作成はappendメソッドを呼ばないので
append呼び出しによるリスト作成に比べて実行速度が速い
list = [ i for i tmpList if is_valid_file( i ) ]
クラス
# HogeObjectクラス. class HogeObject: def __init__(self): print('コンストラクタやで') self.num = 10 def __del__(self): print('デストラクタやで') def func() print('numは{}やで' . format(self.num)) obj = HogeObject() # インスタンス生成. obj.func() # 「numは10やで」表示. del obj # インスタンス破棄.
空のクラスを定義する場合は pass を使う
class EmptyClass: pass
多値返却
関数の戻り値を複数にすることができる
status, data = hoge_func() print status print data # False # 15 def hoge_func(): sum = 5 + 10 return (True, sum);
辞書で返す事もできる、値が多くなってきたら便利そう
result = hoge_dict() print result[ 'flag' ] print result[ 'sum' ] # True # 15 def hoge_dict(): sum = 5 + 10 return {'flag':True, 'sum':sum }
*args,**kwargs について
関数の引数に指定したリストや辞書を分解して渡すことができる
def hoge_func( a = 0, b = 0, c = 1 ) return a + b + c args = [1, 2, 3] kwargs = {'a':5, 'b':6, 'c':7} print "none:", hoge_func() print "*args:", hoge_func(*args) print "**kwargs:", hoge_func(**kwargs) # none:1 # *args:6 # **kwargs:18
その他
・tim.clock() はプロセッサのクロックタイムを返す、ベンチマークとかに使う