为什么只循环了三次呢

问题描述:

ss = [2, 3, 6, 9, 7, 1]
for i in ss:
    ss.remove(min(ss))
    print(min(ss), end=",")

输出结果是多少?为什么只循环了三次呢?

问题解答:循环次数是根据当前,即变换后的列表的长度决定的,而之前的循环次数是一直累计在内的。

代码分析

  1. 初始状态

    • ss = [2, 3, 6, 9, 7, 1]
  2. 循环过程

    • 第一次循环
      • i = 2(因为 for i in ss 是按顺序遍历 ss 的元素)
      • min(ss) = 1
      • ss.remove(1),删除 1ss 变为 [2, 3, 6, 9, 7]
      • 打印 min(ss),即 2
      • 当前输出:2,
    • 第二次循环
      • i = 3
      • min(ss) = 2
      • ss.remove(2),删除 2ss 变为 [3, 6, 9, 7]
      • 打印 min(ss),即 3
      • 当前输出:2,3,
    • 第三次循环
      • i = 6
      • min(ss) = 3
      • ss.remove(3),删除 3ss 变为 [6, 9, 7]
      • 打印 min(ss),即 6
      • 当前输出:2,3,6,
  3. 循环终止

    for i in ss 在每次迭代开始时,会检查 ss 列表的长度。但是,由于我们在循环中修改了 ss 的长度,导致循环次数减少。原本 ss 有 6 个元素,但是我们每次都删除一个元素,使得列表变短。实际上,迭代器在开始遍历时就已经确定了需要遍历的元素数量(原本的 ss 中的 6 个元素),但由于在循环过程中修改了 ss,实际遍历次数减少了。

具体来说,每次删除一个元素后,ss 的长度变为原来的长度减去 1。最开始列表的长度是 6,随着每次删除一个元素,列表的长度变成 5,再变成 4。当遍历到第三个元素时,列表的长度变成了 3,而此时迭代器已经走完了原本应该遍历的 6 个元素中的前 3 个,因此循环终止。

最终输出

最终输出结果是:

2,3,6,

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神笔馬良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值