2011/6/4 Edinson Padron <edinson.padro...@gmail.com>:
>
>> te refieres a getattr?
>>
>>     getattr(x, 'att')
>>
>
> lamentablemente no es a lo que me refiero, recuerdo que es semejante a lo
> siguiente:
>
> map(funcion('attr'), iterable)

ahh, un closure, tendrías que definir una función así:

    def getxattr(attr):
        def foo(x):
            return getattr(x,attr)
    return foo

    map(getxattr('attr'), iterable)

No sé si ya existe esa función

>
>>     [x.att for x in iterable]
>>
>
> lo considere, pero como map esta implementado en C, es mucho mas rápido que
> una list comprehension

Estas seguro? un simple test me muestra que la list comprehension es
mucho más rápida:

    >>> import timeit
    >>> timeit.timeit('map(lambda x: x.numerator, a)', 'a=(1,2,3,4)')
    2.7023310661315918

    >>> timeit.timeit('map(getxattr, a)', """
    a=(1,2,3,4)
    def getxattr(x):
        return x.numerator
    """)
    2.5119788646697998

    >>> timeit.timeit("map(getxattr('numerator'),a)", """
    a=(1,2,3,4)
    def getxattr(attr):
         def foo(x):
             return getattr(x, attr)
         return foo
    """)
    4.4668419361114502

    >>> timeit.timeit('[x.numerator for x in a]', 'a=(1,2,3,4)')
    1.0678210258483887

Esto usando python 2.6

Saludos
-- 
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a