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

Python列表嵌套索引删除疑问:为何删除元素16而非4?

理解嵌套索引的del语句执行逻辑

咱们一步步拆解你的代码,就能明白为什么会出现这个和预期不符的结果:

  1. 初始列表生成
    列表推导式list = [x * x for x in range(5)]会生成列表:[0, 1, 4, 9, 16],这部分你已经分析得很准确。

  2. 关键语句del lst[lst[2]]的执行顺序
    Python在处理这种嵌套索引的表达式时,会优先计算最内层的表达式,也就是先解析lst[2]:

    • 当前lst还是初始的[0,1,4,9,16],索引2对应的元素是4
    • 所以del lst[lst[2]]就等价于del lst[4]
    • 列表索引4对应的元素是16,因此最终被删除的是16,而非你预期的索引2对应的元素4。
  3. 为什么del lst[2]能得到预期结果
    当你改成del lst[2]时,直接指定了要删除的是列表的索引位置2,对应的元素正好是4,这就和你想要的结果一致了。

本质上是你混淆了「索引的数值」和「索引对应的元素值」:原语句里的lst[2]是取元素的值作为新的索引,而不是直接用2作为索引位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:32:40