Python - 有没有类似于while循环中"continue"的方式来重新开始for循环?
基本上,我需要一种方法,在满足某个条件后,能够把控制权返回到for循环的开头,并且真正重新开始整个迭代过程。
我想做的事情是这样的:
for index, item in enumerate(list2):
if item == '||' and list2[index-1] == '||':
del list2[index]
*<some action that resarts the whole process>*
这样,如果列表中包含['berry','||','||','||','pancake'],我最终会得到:
['berry','||','pancake']。
谢谢!
8 个回答
5
某个操作会重新启动整个过程
这样理解算法其实不太好。
你只是过滤,也就是去掉重复的东西。
而且在Python中,你最好是多做一些复制,而不是去用 del
。一般来说,使用 del
的情况非常少。
def unique( some_list ):
list_iter= iter(some_list)
prev= list_iter.next()
for item in list_iter:
if item != prev:
yield prev
prev= item
yield prev
list( unique( ['berry','||','||','||','pancake'] ) )
27
while True:
for i in xrange(10):
if condition(i):
break
else:
break
这样做可以达到你想要的效果。不过,为什么你想这么做又是另外一回事了。也许你应该看看你的代码,确保没有忽略一些明显且更简单的方法。
44
我不太明白你说的“重启”是什么意思。你是想从头开始循环,还是只是跳过当前这次循环呢?
如果是后者的话,for
循环和 while
循环一样,都可以用 continue
来跳过当前的这次循环:
for i in xrange(10):
if i == 5:
continue
print i
上面的代码会打印从 0 到 9 的数字,除了 5。
如果你是想从 for
循环的头开始重新来,那就只能“手动”去做,比如把它放在一个 while
循环里:
should_restart = True
while should_restart:
should_restart = False
for i in xrange(10):
print i
if i == 5:
should_restart = True
break
上面的代码会打印从 0 到 5 的数字,然后又从 0 开始重新来,一直这样循环下去(我知道这不是个很好的例子)。