String Splitter Brain Teaser

Brian van den Broek bvande at po-box.mcgill.ca
Mon Mar 28 03:24:07 CEST 2005


Michael Spencer said unto the world upon 2005-03-27 20:04:
> James Stroud wrote:
> 
>> Hello,
>>
>> I have strings represented as a combination of an alphabet (AGCT) and 
>> a an operator "/", that signifies degeneracy. I want to split these 
>> strings into lists of lists, where the degeneracies are members of the 
>> same list and non-degenerates are members of single item lists. An 
>> example will clarify this:
>>
>> "ATT/GATA/G"
>>
>> gets split to
>>
>> [['A'], ['T'], ['T', 'G'], ['A'], ['T'], ['A', 'G']]
>>
> 
>  >>> def group(src):
>  ...     stack = []
>  ...     srciter = iter(src)
>  ...     for i in srciter:
>  ...         if i == "/":
>  ...             stack[-1].append(srciter.next())
>  ...         else:
>  ...             stack.append([i])
>  ...     return stack
>  ...
>  >>> group("ATT/GATA/G")
>  [['A'], ['T'], ['T', 'G'], ['A'], ['T'], ['A', 'G']]
>  >>>
> 
> Michael
> 

Much nicer than mine. =| :-)

                         ^
                         |
                         ---- (hats off)

I've got to get iterators into my working vocabulary!

Best,

Brian vdB




More information about the Python-list mailing list