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

我正在学习迭代器以及如何使用它们,并在此过程中提出了一个问题。是否有可能在迭代过程中回忆循环停止的位置(如果循环有一个中断条件得到满足),然后从召回的位置开始?


我所说的一个例子是,我有这个代码:


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() Test

10

20

30

40

50

Break Point

10

20

30

40

50

60

70

80

90

我的第一个问题是:


1)有没有办法回忆起休息发生的位置并从那里开始,而不是我笨拙的重新开始?我已经看到实例化,其中迭代在项目列表上,但无法找到一个示例/找出在开始/停止/步骤符号上使用 iter() 的功能示例。


2)在进行研究时(我正在学习Python并进行大量的自我教学),我已经看到range()函数描述器既作为迭代器,也不作为迭代器,因此,如果有人对此有更明确的信息,则相反为了在我的示例中使用它而撕裂我一个新的,这将不胜感激。


MMMHUHU
浏览 365回答 2
2回答

元芳怎么了

对于您的第一个问题...我认为您的方向正确。该iter()会使其应用范围对象的迭代器。它会自我跟踪,您可以在代码中找到您稍后所在的位置。>>> x=iter(range(1,100,10))>>> for i in x:...     if i >30:...             break...>>> for i in x:...     print(i)...4151617181912)范围对象不是迭代器 这很好解释

繁华开满天机

这通常是糟糕的设计。如果您想从上次中断的地方继续,为什么要离开循环的安全性?您将破坏性活动包含在该条件块中。print("Range() Test")for i in range(10, 100, 10):    if i == 60:        print('Break Point')    print(i)或者,根据需要保存尽可能多的状态,然后重新启动:lower = 10upper = 100inc = 10for i in range(lower, upper, inc):    if i == 60:        print('Break Point')        break    print(i)old_i = ifor i in range(old_i, upper, inc):    print(i)输出:Range() Test1020304050Break Point60708090
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python