我有一个循环中的列表,我想在到达look
后跳过3个元素。
在this answer中提出了一些建议,但我没有很好地利用它们:
song = ['always', 'look', 'on', 'the', 'bright', 'side', 'of', 'life']
for sing in song:
if sing == 'look':
print sing
continue
continue
continue
continue
print 'a' + sing
print sing
四次continue
当然是无稽之谈,使用四次next()
是行不通的。
输出应该如下所示:
always
look
aside
of
life
for
使用iter(song)
循环;您可以在自己的代码中执行此操作,然后在循环内推进迭代器;再次调用iterable上的iter()
将只返回相同的iterable对象,这样您就可以在循环内推进iterable,并在下一次迭代中继续执行for
。使用^{} function 推进迭代器;它在Python 2和3中都能正常工作,而无需调整语法:
通过移动
print sing
行,我们可以避免重复自己。使用
next()
这样,如果iterable超出值,则可以引发StopIteration
异常。您可以捕获该异常,但给
next()
第二个参数(忽略该异常并返回默认值的默认值)会更容易:我将使用^{} 跳过3个元素;保存重复的
next()
调用:表将跳过3个元素,然后返回第4个元素,然后完成。对该对象调用
next()
,从而从song_iter()
检索第4个元素。演示:
我认为,在这里使用迭代器和
next
是很好的:或者,除了异常处理(正如@Steinar注意到的那样,异常处理既短又健壮):
相关问题 更多 >
编程相关推荐