use*_*016 8 python iterator for-loop
在python中有一个强大的通用方法来跳过for循环中的第一个元素吗?
我能想到的唯一方法是手工编写一个特殊的发电机:
def skipFirst( it ):
it = iter(it) #identity for iterators
it.next()
for x in it:
yield x
Run Code Online (Sandbox Code Playgroud)
并使用它例如:
for x in skipFirst(anIterable):
print repr(x)
Run Code Online (Sandbox Code Playgroud)
并喜欢:
doStuff( str(x) for x in skipFirst(anIterable) )
Run Code Online (Sandbox Code Playgroud)
并喜欢:
[ x for x in skipFirst(anIterable) if x is not None ]
Run Code Online (Sandbox Code Playgroud)
我知道我们可以在列表上做切片,(x for x in aList[1:])但这会产生一个副本,并不适用于所有序列,迭代器,集合等.
Nee*_*rma 16
for i in list1[1:]: #Skip first element
# Do What Ever you want
Run Code Online (Sandbox Code Playgroud)
说明:
当你在for循环列表中使用[1:]时,它跳过第一个元素并从第二个元素开始循环到最后一个元素
Mar*_*ers 10
当只跳过一个项目时,我会使用以下next()功能:
it = iter(iterable_or_sequence)
next(it, None) # skip first item.
for elem in it:
# all but the first element
Run Code Online (Sandbox Code Playgroud)
通过给它第二个参数,一个默认值,它也会吞下StopIteration异常.它不需要进口,可以简化杂乱for循环设置,并且可以使用在一个for循环中有条件地跳过项目.
如果您希望迭代it跳过第一个项目的所有元素,那么itertools.islice()是合适的:
from itertools import islice
for elem in islice(it, 1, None):
# all but the first element
Run Code Online (Sandbox Code Playgroud)