You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:07:16