Tim Chase wrote:
>    def nsplit(s, delim=None, maxsplit=None):
>      if maxsplit:
>        results = s.split(delim, maxsplit)
>        result_len = len(results)
>        if result_len < maxsplit:
>          results.extend([''] * (maxsplit - result_len)
>        return results
>      else:
>        return s.split(delim)

I'll add a couple more suggestions:

1. Delay the test for maxsplit, as str.split() does the right thing if
maxsplit is None.

2. Use a generator to pad the list, to avoid interim list creation. This
works fine, because list.extend() accepts any iterable. This also shortens
the code a bit, because xrange() does the right thing in this case with
negative numbers. For example:

def nsplit(s, delim=None, maxsplit=None):
    results = s.split(delim, maxsplit)
    if maxsplit is not None:
        results.extend('' for i in xrange(maxsplit - len(results)))
    return results


Jeffrey

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

Reply via email to