How to skip first element of a Generator/Iterator in Python
Use the skip_first()
utility function from UliEngineering:
First, install UliEngineering using
pip install --user UliEngineering
Note that UliEngineeringrequires Python 3.3+.
Now you can use skip_first()
like this:
from UliEngineering.Utils.Iterable import skip_first
for v in skip_first(v for v in [1,2,3,4,5]):
print(v) # Prints 2,3,4,5
skip_first()
will work for any Iterable
or Iterator
.
Don’t want to install UliEngineering?
Copy the skip_first()
utility function into your own code:
import collections
def skip_first(it):
"""
Skip the first element of an Iterator or Iterable,
like a Generator or a list.
This will always return a generator or raise TypeError()
in case the argument's type is not compatible
"""
if isinstance(it, collections.Iterator):
try:
next(it)
yield from it
except StopIteration:
return
elif isinstance(it, collections.Iterable):
yield from skip_first(it.__iter__())
else:
raise TypeError(f"You must pass an Iterator or an Iterable to skip_first(), but you passed {it}")