# -*- Mode: Python; tab-width: 4 -*- import coroutine def flatten1(l): flatten (l) coroutine.main (None) def flatten (l): if type(l) is type([]): for item in l: flatten (item) else: coroutine.main (l) x = [0,1,[2,3],[4,[5,[6]],7,[[[[8]]]],9]] y = [[[0,1],2,[3,[4],[5]],[[6],[7]],8],9] co1 = coroutine.new (flatten1) print coroutine.resume (co1, (x,)) co2 = coroutine.new (flatten1) print coroutine.resume (co2, (y,)) flag = 1 while 1: v1 = coroutine.resume (co1, None) v2 = coroutine.resume (co2, None) print '%s ?= %s' % (v1, v2) if v1 != v2: flag = 0 break if v1 is None: break if flag: print 'equal' else: print 'not equal'