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

Python中两段末尾元素插入代码输出不同,原因何在?

两段Python代码为啥输出不一样?

下面两段代码看起来逻辑差不多,但运行结果完全不同,问题出在哪?

代码1

t1 = ['CS', 'IP', 'IT']
t1.insert(len(t1)-1, t1.pop())
print(t1)     # 输出:['CS', 'IP', 'IT']

代码2

t1 = ['CS', 'IP', 'IT']
x = t1.pop()
t1.insert(len(t1)-1, x)
print(t1)    # 输出:['CS', 'IT', 'IP']

关键原因:Python函数参数是从左到右依次求值

  • 代码1里,insert的两个参数会先按顺序算完再执行插入:
    1. 先算第一个参数len(t1)-1:此时列表长度是3,算出来是2。
    2. 再执行t1.pop():把最后一个元素'IT'删掉,列表变成['CS', 'IP']。
    3. 最后执行插入:往索引2的位置插'IT',但此时列表长度只有2,索引2等于列表长度,元素直接插到末尾,所以列表又变回原来的样子。
  • 代码2里步骤是分开的:
    1. 先执行t1.pop():删掉'IT',列表变成['CS', 'IP'],把'IT'存在x里。
    2. 再算len(t1)-1:此时列表长度是2,算出来是1。
    3. 执行插入:往索引1的位置插'IT',结果就是['CS', 'IT', 'IP']。

说白了就是,代码1里计算插入位置的时候,还没执行删除操作,用的是原列表的长度;代码2是删完再算位置,用的是变短后的列表长度,这就导致了最终结果的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:12