为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何从迭代开始,停止,步进循环中断后重新调用位置

Python:如何从迭代开始,停止,步进循环中断后重新调用位置

MMMHUHU 2021-05-30 10:09:54
我正在学习迭代器以及如何使用它们,并在此过程中提出了一个问题。是否有可能在迭代过程中回忆循环停止的位置(如果循环有一个中断条件得到满足),然后从召回的位置开始?我所说的一个例子是,我有这个代码:print("Range() Test")for i in range(10, 100, 10):    if i == 60:        print('Break Point')        break    print(i)for i in range(10, 100, 10):    print(i)哪个应该运行并给你这样的东西:Range() Test1020304050Break Point102030405060708090我的第一个问题是:1)有没有办法回忆起休息发生的位置并从那里开始,而不是我笨拙的重新开始?我已经看到实例化,其中迭代在项目列表上,但无法找到一个示例/找出在开始/停止/步骤符号上使用 iter() 的功能示例。2)在进行研究时(我正在学习Python并进行大量的自我教学),我已经看到range()函数描述器既作为迭代器,也不作为迭代器,因此,如果有人对此有更明确的信息,则相反为了在我的示例中使用它而撕裂我一个新的,这将不胜感激。
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

对于您的第一个问题...我认为您的方向正确。该iter()会使其应用范围对象的迭代器。它会自我跟踪,您可以在代码中找到您稍后所在的位置。


>>> x=iter(range(1,100,10))

>>> for i in x:

...     if i >30:

...             break

...

>>> for i in x:

...     print(i)

...

41

51

61

71

81

91

2)范围对象不是迭代器 很好解释


查看完整回答
反对 回复 2021-06-01
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

这通常是糟糕的设计。如果您想从上次中断的地方继续,为什么要离开循环的安全性?您将破坏性活动包含在该条件块中。


print("Range() Test")

for i in range(10, 100, 10):

    if i == 60:

        print('Break Point')

    print(i)

或者,根据需要保存尽可能多的状态,然后重新启动:


lower = 10

upper = 100

inc = 10


for i in range(lower, upper, inc):

    if i == 60:

        print('Break Point')

        break

    print(i)

old_i = i


for i in range(old_i, upper, inc):

    print(i)

输出:


Range() Test

10

20

30

40

50

Break Point

60

70

80

90


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 364 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号