[pyar] Longitud de un iterador

Anthony Lenton antoniolenton en gmail.com
Jue Ene 13 18:25:27 ART 2011


2011/1/13 Alejandro Santos <listas en alejolp.com>:
> 2011/1/13 Anthony Lenton <antoniolenton en gmail.com>:
>> Ahora, no hay algo así en la librería estandard, que lo resuelva lindo
>> en 0 lineas de código?
>> No digo el caso general, si no solo para cuando realmente sé lo que va
>> a hacer el iterador, no le puedo decir "ah, de paso, tu longitud es
>> tanto"?
>>
>
>>>> list("hola").__iter__().__length_hint__()
> 4
>>>> iter("hola").__length_hint__()
> 4
>>>> iter((x for x in "hola")).__length_hint__()
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> AttributeError: 'generator' object has no attribute '__length_hint__'
>
> Lo mas chico que pude es 1 linea de código, 0 se me complica.

Muy bueno!

Lástima que justo para los generadores no viene __length_hint__.
Y, aún con __length_hint__() len() no funciona -- necesitaría poder
llamar a len() para poder pasarlo a una función que espera una
secuencia/bichoquetienelen.  Leyendo un poco parece que
__length_hint__ lo usan "algunos métodos internos para operar de
manera más eficiente"[1], pero len() lo ignora por completo.

-- 
Anthony Lenton


[1] http://mail.python.org/pipermail/python-dev/2009-April/088110.html



More information about the pyar mailing list