python - 运行长度解码器格式 - 不列出 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:])
解决方案
您可以将参数转换为字符串并按原样使用它。在函数开始时执行此操作:
in_list = "".join(map(str, in_list))
这样它就适用于所有iterable s。str
是list
还是都没有关系tuple
。
推荐阅读
- python - 如何从运行在 EMR 从节点上的 mapPartitions 中杀死所有 Spark 进程?
- android - 导航组件:通过底部导航将捆绑包传递到目的地
- angular - 单击另一列后如何从表列中删除 HTML 元素
- python - 当我尝试加载图像时,Qt Designer 错误与 Python 抛出错误
- kotlin - Kotlin 对字符串的可变映射进行排序
- .net - 在 MVC 应用程序中排队电子邮件
- ruby-on-rails - 使用枚举选择性别不起作用
- sql - 无法继续执行,因为会话处于 kill 状态
- three.js - 如何在从搅拌机导出为 wrl 并使用 VRMLLoader 导入到 Threejs 的网格上应用纹理
- angular-ui-router - 在 ionic 4 中从单页视图导航到侧面菜单布局