Lista de funciones, algún modo sin eval ni lambda?
Tny
a.porrua en gmail.com
Mar Sep 19 19:59:49 CEST 2006
Alexis Roda escribió:
> Prueba con algo como:
>
> def factoria(parametro) :
> return lambda x : x + parametro
>
> sumas = [ factoria(i) for i in xrange(10) ]
>
>
>
> Saludos
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
La función
def suma(a+b):
return a+b
es una chorrada que se puede meter directamente en el lamda, pero el
objetivo es emplear una función que ya existe, sin reescribirla en
formato lambda ni nada por el estilo.
empleando la función quedaría
def factoria(parametro) :
return lambda x : suma(x, parametro)
sumas = [ factoria(i) for i in xrange(10) ]
Funciona, y nos quitamos de encima el 'eval' aunque siga el 'lambda'.
Lo voy a utilizar en está ocasión en que la lista es pequeña (134 elementos)
Si por desgracia tengo que hacer la fuerza bruta un poco más bruta
emplearé un sistema a medio camino entre las soluciones de que me habéis
aportado
def factoria(parametro) :
return lambda x : suma(x, parametro)
class Sum:
def __init__( self, lista ): self.lista = lista
def __getitem__( self, i ):
return factoría( i )
Gracias.
Saludos.
Más información sobre la lista de distribución Python-es