Dieser Code sollte funktionieren:
>>> iter = (i for i in range(50))
>>> sum(1 for _ in iter)
50
Obwohl es jedes Element durchläuft und zählt, ist dies der schnellste Weg, dies zu tun.
Es funktioniert auch, wenn der Iterator kein Element hat:
>>> sum(1 for _ in range(0))
0
Natürlich läuft es für eine unendliche Eingabe ewig, also denken Sie daran, dass Iteratoren unendlich sein können:
>>> sum(1 for _ in itertools.count())
[nothing happens, forever]
Beachten Sie auch, dass der Iterator wird erschöpft sein und bei weiteren Versuchen, sie zu nutzen, werden keine Elemente . Das ist eine unvermeidliche Folge des Iterator-Designs von Python. Wenn Sie die Elemente behalten wollen, müssen Sie sie in einer Liste oder ähnlichem speichern.
0 Stimmen
Verwandt: Länge eines endlichen Generators