Erstes Element eines Generators/Iterators in Python überspringen

English Deutsch

Verwende die skip_first()-Dienstfunktion aus UliEngineering:

Installiere zunächst UliEngineering mit

install_uliengineering_user.sh
pip install --user UliEngineering

Beachte, dass UliEngineering Python 3.3+ benötigt.

Nun kannst du skip_first() wie folgt verwenden:

skip_first_usage.py
from UliEngineering.Utils.Iterable import skip_first

for v in skip_first(v for v in [1,2,3,4,5]):
    print(v) # Gibt 2,3,4,5 aus

skip_first() funktioniert für jedes Iterable oder Iterator.

Möchtest du UliEngineering nicht installieren?

Kopiere die skip_first()-Dienstfunktion in deinen eigenen Code:

skip_first_impl.py
import collections

def skip_first(it):
    """
    Überspringe das erste Element eines Iterators oder Iterable,
    wie eines Generators oder einer Liste.
    Dies gibt immer einen Generator zurück oder löst TypeError() aus,
    falls der Typ des Arguments nicht kompatibel ist
    """
    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"Du musst einen Iterator oder ein Iterable an skip_first() übergeben, aber du hast {it} übergeben")

Check out similar posts by category: Python