Python中处理列表格式字符串输入实现数字运算返回结果列表
Python解析
[7, 0, 8]格式输入为整数列表的方法 针对你要实现的输入解析、逆序列表相加需求,可以直接用更简洁的逻辑实现,不需要冗余的字符串替换、反转拼接操作。
最简输入解析实现
如果只需要把[7, 0, 8]这类输入字符串转为整数列表,只需要3行核心代码:
# 读取输入并去掉首尾空白 raw_input = input().strip() # 去掉首尾方括号,按逗号分割后逐个元素去空格、转整数 num_list = [int(seg.strip()) for seg in raw_input.strip("[]").split(",")]
测试输入[7, 0, 8]时,num_list的值就是[7, 0, 8],直接打印列表时Python会自动输出标准列表格式,不会保留多余的空格问题。
你原有代码的可优化点
你贴的代码存在几个明显问题,会导致运行报错或者结果不符合预期:
- 内置函数名大小写错误:Python中获取字符ASCII码的内置函数是全小写的
ord(),你写的大写开头Ord()会直接触发NameError - 冗余操作过多:两次调用
translate删除括号、多次反转字符串拼接整数的逻辑完全可以省略,既增加代码量又容易出bug - 空格处理缺失:直接用
split(",")分割字符串时,逗号后的空格会留在分割后的子串里,比如分割7, 0, 8会得到['7', ' 0', ' 8'],后续做字符串拼接时会把空格带入,导致转整数失败 - 逻辑绕路:把列表转成整数相加再转回列表的写法,在列表长度极大时会产生不必要的性能开销,直接按位计算进位的写法逻辑更清晰。
完整的两逆序列表相加实现
从你写的代码逻辑看,你是要实现「两个按逆序存储各位数字的列表相加,结果同样按逆序返回」的逻辑,完整简洁实现如下:
def parse_list_input(): """解析方括号包裹的逗号分隔数字输入为整数列表""" raw = input().strip().strip("[]") return [int(seg.strip()) for seg in raw.split(",")] list1 = parse_list_input() list2 = parse_list_input() carry = 0 result = [] idx = 0 # 遍历到两个列表都遍历完、进位为0时停止 while idx < len(list1) or idx < len(list2) or carry: val1 = list1[idx] if idx < len(list1) else 0 val2 = list2[idx] if idx < len(list2) else 0 total = val1 + val2 + carry carry = total // 10 result.append(total % 10) idx += 1 print(result)
测试用例:
- 第一个输入
[2,4,3],第二个输入[5,6,4],输出[7, 0, 8],符合预期 - 第一个输入
[9,9,9,9],第二个输入[9,9],输出[8,9,0,0,1],计算结果正确。
内容的提问来源于stack exchange,提问作者SAJJA PUSHYANTH RA191100301061
相关产品推荐
相关产品推荐

