Two builtins that replace the counter you keep writing by hand and the indexing you keep getting wrong. One of them also throws data away without telling you.
A for loop is three steps you could write by hand. Once you have seen them, the empty-the-second-time bug stops being a surprise and becomes obvious.
A generator is an iterator you write as a plain function. It pauses at yield, resumes where it stopped, and never builds the list you were about to build.
The loop you are about to write is probably already in the standard library. islice, chain, pairwise and groupby cover most of them, and groupby has one rule you cannot skip.