default value in a list

Peter Otten __peter__ at web.de
Sat Jan 22 03:56:45 EST 2005


Paul McGuire wrote:

>> Is there an elegant way to assign to a list from a list of unknown
>> size?  For example, how could you do something like:
>>
>> >>>  a, b, c = (line.split(':'))
>> if line could have less than three fields?

> I asked a very similar question a few weeks ago, and from the various
> suggestions, I came up with this:
> 
> line = "AAAA:BBB"
> expand = lambda lst,default,minlen : (lst + [default]*minlen)[0:minlen]
> a,b,c = expand( line.split(":"), "", 3 )

Here is an expand() variant that is not restricted to lists but works with
arbitrary iterables:

from itertools import chain, repeat, islice

def expand(iterable, length, default=None):
    return islice(chain(iterable, repeat(default)), length)

Peter







More information about the Python-list mailing list