「Python で map 関数の第 2 引数を操作の対象ではなく手段として使う」 の余談で見た map 関数の特殊な使い方。第 1 引数を None とした場合の zip 関数との違いを確認しておく。
例えば、
print zip([1,2,3], [1,2,3,4,5]) print map(None, [1,2,3], [1,2,3,4,5])
結果は、
[(1, 1), (2, 2), (3, 3)] [(1, 1), (2, 2), (3, 3), (None, 4), (None, 5)]
つまり、
- 短い方に合わせる zip
- 長い方に合わせる map
zip とは
ところで、何で zip という名前なんだろう (?_?)
Yahoo!辞書 – zip によると、
1 …をチャック[ジッパー]で締める[開ける
二つのリストをチャックで締め合わせるということか?
zip を元に戻す
zip したものを元に戻すにはどうしたらいいのだろう? Haskell には unzip 関数があったけれど、Python には見あたらない。 (+_+) 自分でやるしかないかぁ。
例えば、
z = zip([1,2,3], [1,2,3,4,5]) print [a for a,b in z],[b for a,b in z]
それとも、
a,b = [], [] for x,y in z: a.append(x); b.append(y) print a,b
ということは、これでもいけるか~
a,b = [], [] [(a.append(x),b.append(y)) for x,y in z] print a,b
for とリスト内包表記の対応をちゃんとイメージで覚えておこっと。
0コメント:
コメントを投稿