zip関数
いまさらだけどPython にも zip関数があるのを知った。というか見逃していた。
>>> a = range(5)
>>> a
[0, 1, 2, 3, 4]
>>> b = ['a', 'b', 'c', 'd', 'e']
>>> zip(a, b)
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]
今まで↓こう書いてたよ。ばかみたい。zipのほうがよっぽどすっきりしている。
>>> map(lambda x, y: (x, y), a, b)
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]
とはいえ、違いもある。 zipは長さを短いほうにあわせる。
>>> c = ['foo', 'bar', 'baz']
>>> zip(a, c)
[(0, 'foo'), (1, 'bar'), (2, 'baz')]
mapだと長いほうにあわせて、足りない部分にはNoneが入る。
>>> map(lambda x, y: (x, y), a, c)
[(0, 'foo'), (1, 'bar'), (2, 'baz'), (3, None), (4, None)]
