Wenn range () ein Generator in Python 3.3 ist, warum kann ich nicht als nächstes () auf einen Bereich aufrufen?

Vielleicht bin ich Opfer von Fehlinformationen im Internet, aber ich denke, es ist eher so, dass ich etwas falsch verstanden habe. Basierend auf dem, was ich bisher gelernt habe, ist range () ein Generator und Generatoren können als Iteratoren verwendet werden. Dieser Code:

myrange = range(10) print(next(myrange)) 

Gibt mir diesen Fehler:

 TypeError: 'range' object is not an iterator 

Was fehlt mir hier Ich habe davon myrange dass ich 0 ausdrucke und auf den nächsten Wert in myrange . Ich bin neu in Python, also bitte akzeptiere meine Entschuldigung für die ziemlich grundlegende Frage, aber ich konnte keine gute Erklärung irgendwo anders finden.

One Solution collect form web for “Wenn range () ein Generator in Python 3.3 ist, warum kann ich nicht als nächstes () auf einen Bereich aufrufen?”

range ist eine Klasse von unveränderlichen iterablen Objekten. Ihr Iterationsverhalten kann mit der list verglichen werden: Sie können nicht direkt auf sie aufrufen; Du musst einen Iterator mit Hilfe von iter .

Also nein, range ist kein Generator.

Sie können denken, "warum haben sie es nicht direkt iterable gemacht"? Nun, range s haben einige nützliche Eigenschaften, die so nicht möglich wäre:

  • Sie sind unveränderlich, also können sie als Wörterbuchschlüssel verwendet werden.
  • Sie haben die start , stop und step Attribute (seit Python 3.3), __getitem__ und index Methoden und unterstützen sie, len und __getitem__ Operationen.
  • Sie können mehrmals über den gleichen range iterieren.

 >>> myrange = range(1, 21, 2) >>> myrange.start 1 >>> myrange.step 2 >>> myrange.index(17) 8 >>> myrange.index(18) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 18 is not in range >>> it = iter(myrange) >>> it <range_iterator object at 0x7f504a9be960> >>> next(it) 1 >>> next(it) 3 >>> next(it) 5 
  • Holen Sie den Ordnernamen der Datei in Python
  • Funktion mit drei Parametern reduzieren
  • Python CGI - UTF-8 funktioniert nicht
  • Fehler beim Installieren von PyMVPA2
  • Schöne Suppe findAll finden sie nicht alle
  • Mit Sin-1 oder inverser Sünde in Python
  • Verständnis von Pythons "is" Betreiber
  • Plastik der Revolution in Python 3 (Matplotlib vielleicht)
  • Wie kann ich fixTypeError: 'str' Objekt ist nicht abrufbar?
  • Warum gibt str (float) mehr Ziffern in Python 3 als Python 2 zurück?
  • Warum funktioniert die Arbeit nicht in Python 3?
  • Python ist die beste Programmiersprache der Welt.