zip 2 sequences into 1
Tony Meyer
t-meyer at ihug.co.nz
Wed Apr 21 23:29:07 EDT 2004
> def flatten(s):
> for i in s:
> for j in i:
> yield j
>
> flatten(zip([1,2,3], "abc"))
Or (I find zip confusing, so avoid it :) ):
def merge(s1, s2):
for i in xrange(min(len(s1), len(s2))):
yield s1[i]
yield s2[i]
>>> import timeit
>>> f = "def flatten(s):\n for i in s:\n\n for j in i: yield j"
>>> m = "def merge(s1, s2):\n for i in xrange(min(len(s1), len(s2))):\n
yield s1[i]\n yield s2[i]"
>>> t = timeit.Timer("list(flatten(zip([1,2,3], 'abc')))", setup=f)
>>> t.timeit()
8.6624506745969256
>>> t = timeit.Timer("list(merge([1,2,3], 'abc'))", setup=m)
>>> t.timeit()
7.8756800096101642
=Tony Meyer
More information about the Python-list
mailing list