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/