[Python-3000] have zip() raise exception for sequences of different lengths (original) (raw)
Jim Jewett jimjjewett at gmail.com
Thu Aug 31 17:38:59 CEST 2006
- Previous message: [Python-3000] have zip() raise exception for sequences of different lengths
- Next message: [Python-3000] have zip() raise exception for sequences of different lengths
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 8/30/06, Barry Warsaw <barry at python.org> wrote:
On Aug 30, 2006, at 5:57 PM, Guido van Rossum wrote:
> Perhaps a compromise could be to add a keyword parameter to request > such an exception? (We could even add three options: truncate, pad, > error, with truncate being the default, and pad being the old map() > and filter() behavior.)
What about a keyword argument called 'filler' which can be an n-sized sequence or a callable.
How about a keyword-only argument called finish which is a callable to deal with the problem? When any sequence is exhausted, its position is filled with StopIteration, and then finish(result) is returned.
For example,
>>> g=zip("abc", (1,2))The third call to g.next() will return the result of finish('c', StopIteration)
def finish_truncate(*args): # The default, like today raise StopIteration
def finish_error(*args): if all(v is StopIteration for v in args): raise StopIteration raise ValueError("Mismatched sequence length %s" % args)
def finish_padNone(*args): if all(v is StopIteration for v in args): raise StopIteration return tuple((v if v is not StopIteration else None) for v in args)
-jJ
- Previous message: [Python-3000] have zip() raise exception for sequences of different lengths
- Next message: [Python-3000] have zip() raise exception for sequences of different lengths
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]