[pyar] De Alejandro: otra duda

Juan Manuel Santos vicariousdm en gmail.com
Mie Jun 26 01:00:05 ART 2013


On Tuesday, June 25, 2013 23:18:32 German Jimenez wrote:
> Es de muy noob esto pero no logro intuir porque sería el switch-case
> simulado con un diccionario mas eficiente que el if-elif, pensé que sería
> al revés, o una comparación de igualdad es mas lenta que una búsqueda en un
> diccionario + una llamada a una función?
> 
> def ifelif(n):
> 
>     if n == 0: pass
> 
>     elif n == 1: pass
> 
> 
> def simulswitch(n):
> 
>     def foo(): pass
> 
>     def bar(): pass
> 
>     dic = {0:foo,1:bar}
> 
>     dic[n]()

Tengo entendido que una comparación de igualdad no es más lenta que una 
búsqueda en un diccionario (me tiraría abajo todos los paradigmas si fuera así xD).

Pero pensá en la cantidad de if/elif vs la búsqueda: si tenés 20 if/elif, asumamos que 
en promedio se llega a la décima comparación antes de encontrar un match. Ahí ya 
tenés 10 comparaciones. En cambio con un diccionario siempre vas a tener una sola 
búsqueda :)

Lógicamente, para 2 comparaciones es un poco overkill hacerse un diccionario (hasta 
mi lógica iría contra eso, ya que primero tendría que googlear como se hacía :P). En 
cambio, si tenés un pool de 20 comparaciones que hacer... :)

Saludos
Juan Manuel Santos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130626/7c144fe8/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130626/7c144fe8/attachment.sig>


More information about the pyar mailing list