首页 > 解决方案 > 运行长度解码器格式 - 不列出 str 问题

问题描述

我正在开发一个运行长度解码器,它能够接受带有编码序列的列表,并返回解码后的字符串。如果我输入 'qaa4bb2cc3d' → 对于类似 'qaaaabbcccd' 这样的输出,以下代码有效,但不适用于这种格式 ['q', 'a', 'a', 4, 'b', 'b', 2, 'c', 'c', 3, 'd'] → 'qaaaabbcccd' (单独的引号和逗号)我最终得到如下错误:“TypeError:can only concatenate str (not "list") to str" 我认为这与给出列表或字符串的格式有关,我应该如何解决这个问题才能让我的代码正常工作?

def decode(in_list):
    if len(in_list) < 3:
        return in_list

    char1 = in_list[0]
    char2 = in_list[1]
    num = in_list[2]


    if num.isdigit():
        return char1 * int(num) + decode(in_list[3:])
    else:
        return char1 + decode(in_list[1:])

标签: python

解决方案


您可以将参数转换为字符串并按原样使用它。在函数开始时执行此操作:

in_list = "".join(map(str, in_list))

这样它就适用于所有iterable s。strlist还是都没有关系tuple


推荐阅读