 be indexed. Index 0 is the item that will be returned by
:func:`next`, index 1 is the item after that, and so on:
The values up to the given index will be cached.

    >>> p = peekable(['a', 'b', 'c', 'd'])
    >>> p[0]
    'a'
    >>> p[1]
    'b'
    >>> next(p)
    'a'

Negative indexes are supported, but be aware that they will cache the
remaining items in the source iterator, which may require significant
storage.

To check whether a peekable is exhausted, check its truth value:

    >>> p = peekable(['a', 'b'])
    >>> if p:  # peekable has items
    ...     list(p)
    ['a', 'b']
    >>> if not p:  # peekable is exhausted
    ...     list(p)
    []

c