len() on iterator

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hi,

in Python 2.4 gab es noch eine __len__ methode auf iteratoren (z.b. tuple iteratoren), warum wurde len() bei iteratoren in 2.6 komplett gestrichen?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wurde es nicht.
BlackJack

@DasIch:

Code: Alles auswählen

Python 2.4.4 (#2, Jul 31 2008, 23:57:57)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = iter((1, 2, 3))
>>> a.__len__
<method-wrapper object at 0xb7cd426c>
>>>

Code: Alles auswählen

Python 2.6rc1 (r26rc1:66416, Sep 15 2008, 15:38:46)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = iter((1, 2, 3))
>>> a.__len__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tupleiterator' object has no attribute '__len__'
@Mad-Marty: Das wurde nie durch Dokumentation garantiert.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

@ BlackJack

Ok hab nie nachgesehen ob das dokumentiert wurde, habe nur eben auf 2.6 festgestellt das es nicht mehr geht, zum glück nur einmal verwendet im source ;).


Auserdem fällt mir gerad auf das meine extensiv udp und pysnmp 2.x verwendende anwendung unter 2.6 sehr viel langsamer ist .... DeprecationWarnings bekomme ich aber keine.

Eine Idee woran das liegen könnte?
Antworten