如何获取前两次循环执行完成时的变量值?附代码示例
获取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
逻辑说明
- 初始状态:
last_a和last_last_a都为0; - 第一次循环:输出初始的
last_last_a(0),随后将last_last_a设为原来的last_a(0),last_a设为当前a值(20); - 第二次循环:输出更新后的
last_last_a(0),随后将last_last_a设为原来的last_a(20),last_a设为当前a值(13); - 后续循环:每次输出的
last_last_a都是上上次循环的a值,以此类推得到预期输出。
内容的提问来源于stack exchange,提问作者July
相关产品推荐
相关产品推荐

