Python match case无法向列表插入?如何解决输出空列表问题
问题修复方案
问题根源
你的代码里**data = []放在了for循环内部**,每次执行循环都会重新创建一个空列表,之前的append、insert等操作都会被清空,所以执行print命令时输出的自然是空列表。
修复方法
把data = []移到for循环外面,让它成为整个循环共享的列表,这样所有命令操作的都是同一个列表,数据会被持续保留。
完全不需要改用if elif,match case的写法没有问题,问题出在变量的作用域位置上。
修复后的完整代码
if __name__ == '__main__': N = int(input()) data = [] # 移到循环外部,确保所有命令操作同一个列表 for _ in range(N): cmd, *args = input().split() match cmd: case "insert": data.insert(int(args[1]), args[0]) case "print": print(data) case "remove": data.remove(args[0]) case "append": data.append(args[0]) case "sort": data.sort() case "reverse": data.reverse() case "pop": data.pop() case _: raise ValueError(f"Illegal command: {cmd}")
测试验证
用你提供的输入测试:
4 append 1 append 2 insert 3 1 print
现在会输出['1', '3', '2'],符合操作预期。
内容的提问来源于stack exchange,提问作者Richard Rublev
相关产品推荐
相关产品推荐

