简体   繁体   中英

Converting a list of tuples into a string

I'm new to run-length coding and need help. I've been given a run-length string of a series of integer followed by characters that include letters/characters.

For example, I have a string:

1-4c8k2)

And I need to convert it into:

-cccckkkkkkkk))

What I've done is convert the run-length string into a list of tuples:
[('1','-'),('4','c'),('8','k'),('2','c')]

And tried creating a function which would convert it into a string however I get a


def decode(lst):
    q = ''
    for count, character in lst:
        q += count * character
    return q

I'm trying to think of a way to improve space complexity instead of creating a new list of tuples and more so, trying to resolve this TypeError.

I suspect that what has happened is you forgot to convert the counts into ints :

>>> 3 * 'a'
'aaa'

>>> '3' * 'a'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'

>>> int('3') * 'a'
'aaa'

You try through this way :

lst = [('1','-'),('4','c'),('8','k'),('2','c')]
def decode(lst):
    q = ''
    for count, character in lst:
        q += int(count) * character
    return q

print(decode(lst))

Output :

-cccckkkkkkkkcc

Check this code here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM