とりあえず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 件のコメント:
コメントを投稿