とりあえず20章のつづき。
まずはzip関数とシーケンスを分解してタプルで返す
関数に複数の引数を与え、それをzip関数で解凍する
while all(seqs)に注目
ここでallはリスト内の各要素が反復可能か調べるみたい
anyとかいうのもある。
dictionaryの反復はkeyでアクセスする。
リストをfor文で作れるがセットでは違ってくる(重複するのを避ける)
まずはzip関数とシーケンスを分解してタプルで返す
>>> zip([-2, -1, 0]) [(-2,), (-1,), (0,)] >>> >>> zip([-2, -1, 0], [3, 2, 1, 0]) [(-2, 3), (-1, 2), (0, 1)]
関数に複数の引数を与え、それをzip関数で解凍する
>>> def mymap(func, *seqs): ... return [func(*args) for args in zip(*seqs)]zip関数を自作すると以下のようになる。
while all(seqs)に注目
>>> def myzip(*seqs): ... seqs = [list(S) for S in seqs] #各引数をリストに直したものをseqsに入れる ... res = [] ... while all(seqs): #各引数について先頭のものを消去しながらループ ... res.append(tuple(S.pop(0) for S in seqs)) ... return res ... >>> myzip([1,2,3]) [(1,), (2,), (3,)]
ここでallはリスト内の各要素が反復可能か調べるみたい
anyとかいうのもある。
>>> all([1,2,3]) True >>> all([1,2,0]) False >>> all([[1,2], [0]]) True >>> all([[1,2], []]) False >>> all([]) True
dictionaryの反復はkeyでアクセスする。
>>> d = {'jap': 35, 'ame': 2, 'eng': 0} >>> for key in d: ... print key, d[key] ... ame 2 jap 35 eng 0 >>>
リストをfor文で作れるがセットでは違ってくる(重複するのを避ける)
>>> [x + y for x in [1,2,3] for y in [4, 5, 6]] [5, 6, 7, 6, 7, 8, 7, 8, 9] >>> {x + y for x in [1,2,3] for y in [4,5,6]} set([5, 6, 7, 8, 9])
0 件のコメント:
コメントを投稿