Specific iterator in one line

Tim Chase python.list at tim.thechases.com
Tue Jun 30 06:29:58 EDT 2009

>> list("".join([("a","b"*2)[x] for x in [1,0,0,1]])
>> 50 characters. Do I win £5?
> list("".join([("a","bb")[x] for x in [1,0,0,1]])
> Or 49 :o)

Well, you have a missing ")" character, but that would be the 
49th.  You can[*] abuse python's parsing by removing certain 
spaces with

   list(''.join([('a','bb')[x]for x in[1,0,0,1]]))

bringing you down to 47.  In more recent versions of Python, you 
can then pass a generator instead of a list-comprehension:

   list(''.join(('a','bb')[x]for x in[1,0,0,1]))

bringing you to 45.


[*] not *should*, but *can*

More information about the Python-list mailing list