2017-10-10 77 views
0

我是新来的游程编码,需要帮助。我给出了一系列整数的游程长度字符串,后面跟着包含字母/字符的字符。

例如,我有一个字符串:将元组列表转换为字符串

1-4c8k2) 

我需要把它转换成:

-cccckkkkkkkk)) 

我所做的是运行长度的字符串转换成元组的列表:
[('1','-'),('4','c'),('8','k'),('2','c')]

并尝试创建一个函数,将它转换为一个字符串,但我得到一个
TypeError:不能乘以类型'str'的非int的序列。

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

我试图想改善而不是创建的元组,更使一个新的列表的空间复杂度的方式,试图解决这一类型错误。

+0

你运行的Python版本的?这适用于我在3.5 –

+0

@PatrickHaugh奇怪..我正在运行3.4.3 –

回答

5

我怀疑是发生了什么事是你忘了计数转换成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' 
+0

哇,这真是我的愚蠢。感谢堆!我意识到我已经创建了我的元组('2','''')而不是(2,')')。 –

0

您尝试通过这样的方式:

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)) 

输出:

-cccckkkkkkkkcc 

检查这个代码here

+0

谢谢!这正是我所需要的,因为我已将整数列表格式化为字符串,所以这纠正了问题 –

+0

welcome @ marty_78632 –

相关问题