[jcd at sdf.lonestar.org: Re: Compress a string]
Matt Porter
mabbikeel at gmail.com
Sun May 18 14:22:57 EDT 2008
On Sun, 18 May 2008 19:13:57 +0100, J. Clifford Dyer
<jcd at sdf.lonestar.org> wrote:
> On Sun, May 18, 2008 at 07:06:10PM +0100, Matt Porter wrote regarding
> Compress a string:
>>
>> Hi guys,
>>
>> I'm trying to compress a string.
>> E.g:
>> "AAAABBBC" -> "ABC"
>>
>> The code I have so far feels like it could be made clearer and more
>> succinct, but a solution is currently escaping me.
>>
>>
>> def compress_str(str):
>> new_str = ""
>> for i, c in enumerate(str):
>> try:
>> if c != str[i+1]:
>> new_str += c
>> except IndexError:
>> new_str += c
>> return new_str
>>
>>
>> Cheers
>> Matt
>
> def compress_str(s):
> # str is a builtin keyword. Don't overload it.
> out = []
> for c in s:
> if out and c == out[-1]:
> out.append(c) # This is faster than new_str += c
> return ''.join(out)
>
>
Thanks. Had to change a few bits to make it behave as I expected:
def compress_str(s):
# str is a builtin keyword. Don't overload it.
out = [s[0],]
for c in s:
if out and c != out[-1]:
out.append(c) # This is faster than new_str += c
return ''.join(out)
Feels slightly less hacked together
> --
> http://mail.python.org/mailman/listinfo/python-list
>
--
--
More information about the Python-list
mailing list