zip broken?

Marek "Baczek" Baczyński imbaczek at poczta.onet.pl
Sat Jun 7 17:19:05 EDT 2003


Hello Pythonistas,

I found a behaviour of zip() which I don't like -- it hangs on
infinite generators. Consider this code:

#v+
def my_zip(*args):
    while 1:
        yield tuple([l.next() for l in args])

def check_if_blocks(vy, g, h, hmin, hmax):
# this won't ever stop            vvv
#    for t, (y1, y2) in enumerate(zip(hmin, hmax)):
    for t, (y1, y2) in enumerate(my_zip(hmin, hmax)):
        t += 1
        y = -g*t*t/2 + vy*t + h
        if y1 >= y or y >= y2:
            return (t,y)
        print "%d: %d < %d < %d"%(t, y1, y, y2)
    return (t,y)

def numbers(x):
    while 1:
        yield x

def main():
    check_if_blocks(10, 1, 5, numbers(5), numbers(60))

if __name__ == '__main__':
    main()
#v-

-- 
{ Marek Baczyński :: UIN 57114871 :: GG 161671 :: JID imbaczek at jabber.gda.pl  }
{ http://www.vlo.ids.gda.pl/ | imbaczek at poczta fm | http://www.promode.org }
.. .. .. .. ... ... ...... evolve or face extinction ...... ... ... .. .. .. ..






More information about the Python-list mailing list