2017-10-10 76 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 –

相關問題