[pyar] Eiliminando if .. else

Martin Alejandro Castro Álvarez martincastro.10.5 en gmail.com
Jue Feb 22 13:29:24 -03 2018


Multiplicar lo hace muchas veces más rápido que dividir:

def fast(a, b):
    if not b:
        return r4
    if a > 3 * b:
        return r4
    if a >= b:
        return r3
    if a < 0.1 * b:
        return r1
    return r2


2018-02-22 12:01 GMT-03:00 Luis Andraschnik <luis.andraschnik at gmail.com>:

> Hola Lucio
> Esta es más complicada, lo tengo que tomar con dos vasos de agua :)
> Saludos!
> Luis
>
>
> El 22 de febrero de 2018, 11:33, Lucio <lucionardelli at gmail.com> escribió:
>
>> Bunas,
>>
>> Muy buena la de *bisect*! No la tenía, te queda mucho más lindo!
>>
>> Yo lo resolví utilizando *groupby*. De todas maneras lo comparto porque
>> me parece interesante para responder la pregunta original de como evitar
>> los *else if*.
>> Lo que hice es sencillo, los límites están ordenados por lo que siempre
>> podés ir "buscando" el "*menor de los mayores"* :
>>
>> import numpy as npfrom itertools import groupby
>>> #map_vector acetileno/etileno
>>> ACETILENO_ETILENO_MV = {0.1: 0,
>>>         1.0: 1,
>>>         3.0: 1,
>>>         np.inf: 4}
>>> def classify(value, map_vector):
>>>     for limit in sorted(map_vector.keys()):
>>>         if value < limit:
>>>             return map_vector[limit]
>>>     else:
>>>         return map_vector[np.inf]
>>> def gas_a_div_gas_b(a, b):
>>>     temp =  np.inf if b == 0 else a/b
>>>     return classify(temp, ACETILENO_ETILENO_MV)
>>>
>>>
>> Saludos!
>>
>> El 22 de febrero de 2018, 11:14, Facundo Batista <
>> facundobatista at gmail.com> escribió:
>>
>>> El 22 de febrero de 2018, 10:59, Luis Andraschnik
>>> <luis.andraschnik at gmail.com> escribió:
>>>
>>> >     if temp < 0.1:
>>> >         result = r1
>>> >     elif 0.1 <= temp < 1.0:
>>> >             result = r2
>>> >     elif 1.0 <= temp <= 3.0:
>>> >         result = r3
>>> >     else:
>>> >         result = r4
>>> >     return result
>>>
>>> Mirá el primer ejemplo acá:
>>> https://docs.python.org/3/library/bisect.html#other-examples
>>>
>>> Si no te sale, lo vemos.
>>>
>>> Saludos,
>>>
>>> --
>>> .    Facundo
>>>
>>> Blog: http://www.taniquetil.com.ar/plog/
>>> PyAr: http://www.python.org/ar/
>>> Twitter: @facundobatista
>>> _______________________________________________
>>> Lista de Correo de PyAr - Python Argentina - pyar at python.org.ar
>>> Sitio web: http://www.python.org.ar/
>>>
>>> Para administrar la lista (o desuscribirse) entrar a
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>
>>
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar at python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar at python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 

*Martín Alejandro Castro Álvarez*
Software Solutions
*https://www.martincastroalvarez.com <https://www.martincastroalvarez.com>*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180222/ab7d73c0/attachment-0001.html>


Más información sobre la lista de distribución pyar