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

Python待办应用中print函数的列表索引错误问询

问题分析与解决

你的问题核心在于删除操作与索引访问的顺序逻辑错误:

当你先执行todos.remove(deleting_todo)后,列表todos的结构已经改变——目标元素被移除,后续元素会向前移位填补空缺。此时再用之前计算的todo_index - 1去访问列表,得到的是删除后该位置的新元素,而非你原本要删除的那个。

两种可行修复方案

方案1:先保存待删除元素,再执行删除

先通过索引获取并保存目标元素,删除后直接用保存的变量打印,彻底避开对变化后列表索引的依赖:

# 先获取并保存待删除元素
deleting_todo = todos[todo_index - 1]
# 执行删除操作
todos.remove(deleting_todo)
# 使用保存的元素打印结果
print(f"todo '{deleting_todo}' was deleted successfully")

方案2:使用pop()方法(更高效简洁)

pop()方法支持通过索引直接删除元素,同时返回被删除的元素,一步完成删除与获取操作,无需额外的查找步骤:

# 通过索引删除并获取被删除的元素
deleted_todo = todos.pop(todo_index - 1)
# 直接打印返回的目标元素
print(f"todo '{deleted_todo}' was deleted successfully")

另外注意:原代码里的wad是拼写错误,建议修正为was。

内容的提问来源于stack exchange,提问作者user26745043

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:07