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

如何获取前两次循环执行完成时的变量值?附代码示例

获取Python循环中前两次迭代完成时的值

在Python中,我们可以通过last_a = a的方式记录上一次循环结束时的变量值,但如果需要获取上上次(前两次)循环完成时的值,需要调整变量的更新逻辑。

输入代码(存在问题)

A = [20,13,15,25,24,17,14,19,23,11]
B = [32,43,65,21,13,16,53,52,35,38]
last_a = last_b = 0
last_last_a = last_last_b = 0
for a,b in zip(A, B):
    if a < last_a and b < last_b:
        pass
    last_a = a
    last_b = b
    print(last_last_a)

预期输出

0
0
20
13
15
25
24
17
14
19

问题分析与修正

原代码的问题在于last_last_a从未被更新,始终保持初始值0。要实现预期效果,需要按顺序更新变量:先输出当前的last_last_a,再将last_last_a替换为上一次的last_a,最后把last_a替换为当前循环的a值。

修正后的代码:

A = [20,13,15,25,24,17,14,19,23,11]
B = [32,43,65,21,13,16,53,52,35,38]
last_a = last_b = 0
last_last_a = last_last_b = 0

for a,b in zip(A, B):
    # 先输出上上次循环的a值
    print(last_last_a)
    
    # 执行原有业务逻辑
    if a < last_a and b < last_b:
        pass
    
    # 按顺序更新变量:先更新上上次值,再更新上次值
    last_last_a, last_a = last_a, a
    last_last_b, last_b = last_b, b

逻辑说明

  1. 初始状态:last_a和last_last_a都为0;
  2. 第一次循环:输出初始的last_last_a(0),随后将last_last_a设为原来的last_a(0),last_a设为当前a值(20);
  3. 第二次循环:输出更新后的last_last_a(0),随后将last_last_a设为原来的last_a(20),last_a设为当前a值(13);
  4. 后续循环:每次输出的last_last_a都是上上次循环的a值,以此类推得到预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:15:34