[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