【问题标题】:Converting a list of tuples into a string将元组列表转换为字符串
【发布时间】:2017-10-10 01:37:59
【问题描述】:

我是游程编码的新手,需要帮助。我得到了一个由一系列整数组成的游程长度字符串,后跟包含字母/字符的字符。

比如我有一个字符串:

1-4c8k2)

我需要把它转换成:

-cccckkkkkkkk))

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

并尝试创建一个将其转换为字符串的函数,但是我得到一个
TypeError: can't multiply sequence by non-int of type 'str'。

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

我正在想办法提高空间复杂度,而不是创建一个新的元组列表等等,试图解决这个 TypeError。

【问题讨论】:

  • 你运行的是什么版本的python?这适用于我 3.5
  • @PatrickHaugh Strange.. 我正在运行 3.4.3

标签: python python-3.x tuples


【解决方案1】:

我怀疑发生的事情是您忘记将计数转换为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'

【讨论】:

  • 哇,我真是太傻了。多谢!我意识到我创建的元组是 ('2',')') 而不是 (2,')')。
【解决方案2】:

你试试这个方法:

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

【讨论】:

  • 谢谢!这正是我所需要的,因为我已将整数列表格式化为字符串,因此这解决了问题
猜你喜欢
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多