[Python-de] Quadratische Laufzeit oder?

Stefan Schwarzer sschwarzer at sschwarzer.net
So Sep 28 18:32:18 CEST 2014


Hi Alexander,

On 2014-09-28 14:36, Alexander Blinne wrote:
> Da muss ich mich leicht korrigieren: Es ist etwas, was bei jeder
> Benutzung einen neuen Iterator erzeugt, denn ein range-objekt lässt sich
> in der Tat mehrmals iterieren. Daher funktioniert der gekapselte
> Iterator tatsächlich auch in Python 3 mit einem range-Objekt.

Interessant finde ich auch, dass mit `range`-Objekten
sogar Indizierung und Slicing funktionieren (wobei ein
Slice ein neues `range`-Objekt gibt):

In [4]: r = range(10)

In [5]: list(r)
Out[5]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [6]: list(r)
Out[6]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [7]: r[1]
Out[7]: 1

In [8]: r[1:3]
Out[8]: range(1, 3)

Irgendwie sind diese "Erleichterungen" gegenüber "normalen"
Iteratoren ja auch sinnvoll, da man bei einem Range den Wert
für einen Index oder ein Slice in konstanter Zeit berechnen
kann, also ohne iterieren und/oder etwas zwischenspeichern
zu müssen.

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de