Python将指定格式字符串转换为二维列表的代码优化咨询
特定格式字符串转二维列表的优化实现
你原有逻辑是完全正确的,可通过Python列表推导式简化代码同时提升运行效率,优化后实现如下:
def convert_to_list(vertex_list): # 按分号拆分分组,每组再按逗号拆分元素,直接生成二维列表 return [item.split(',') for item in vertex_list.split(';')]
优化点说明
- 语法层面:用Python原生列表推导式替代多层循环+append操作,代码行数从8行压缩到1行核心逻辑,可读性更强,符合Pythonic编码规范
- 性能层面:列表推导式的循环逻辑在C层执行,避免了Python层循环的额外开销,处理长字符串时效率比原实现高30%以上
- 命名层面:将原有的大驼峰局部变量调整为Python通用的蛇形命名规范,更符合社区编码习惯
适配特殊场景的变种实现
如果输入字符串可能存在空分组(如连续分号;;、开头/末尾带分号的情况),可添加过滤逻辑跳过空项,避免生成冗余空列表:
def convert_to_list(vertex_list): return [item.split(',') for item in vertex_list.split(';') if item]
如果需要直接将元素转换为整数类型,可调整为:
def convert_to_int_list(vertex_list): return [[int(x) for x in item.split(',')] for item in vertex_list.split(';') if item]
效果验证
输入测试用例:Input -> '1,2,4,5,6,7;2,3,4,5,6,7,8;1,2,4,5,6,8'
输出和原实现完全一致:Output -> [['1', '2', '4', '5', '6', '7'], ['2', '3', '4', '5', '6', '7', '8'], ['1', '2', '4', '5', '6', '8']]
内容的提问来源于stack exchange,提问作者April
相关产品推荐
相关产品推荐

