On Apr 4, 4:53 pm, [EMAIL PROTECTED] wrote:
> elements, say len(a) = 5, len(b) = 3
> >>> a = range(5)
> >>> b = range(3)
...
> I want the results to be
> [(0, 0), (1, 1), (2, 2) , (3) , (4) ]
> can it be done?

A bit cumbersome, but at least shows it's possible:

>>> def superZip( a, b ):
        common = min( len(a), len(b) )
        results = zip( a[:common], b[:common] )
        if len( a ) < len( b ):
                a = b
        return results + [ (x,) for x in a[common:] ]

>>> superZip( range( 5 ), range( 3 ) )
[(0, 0), (1, 1), (2, 2), (3,), (4,)]
>>> superZip( range( 3 ), range( 5 ) )
[(0, 0), (1, 1), (2, 2), (3,), (4,)]
>>> superZip( range( 0 ), range( 5 ) )
[(0,), (1,), (2,), (3,), (4,)]
>>> superZip( range( 3 ), range( 3 ) )
[(0, 0), (1, 1), (2, 2)]

Regards,
Ryan Ginstrom

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to