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