[pyar] Eiliminando if .. else

Luis Andraschnik luis.andraschnik en gmail.com
Jue Feb 22 10:59:26 -03 2018


Hola grupo!

Estoy implementando en Python la norma IEC599 disolved Gas Analysis (DGA)
of mineral oil used in transformers. Hay que mapear el cociente entre 2
concentraciones de gases según el resultado, o sea es una función f:R --> N

Este es el ejemplo para aceitleno y etileno, que se extiende a otras 2
relaciones de gases (metano/hidrógeno y etileno/etano), dónde sólo cambia
el "map_vector".
¿ Hay una forma más elegante o pythónica de expresar esta función sin
tantos elif ?, especialmente porque tengo en cuenta que debe ser una
expresión muy común en muchos ámbitos, y la voy a utitilizar implementando
otras normas que emplean un procedimiento de mapeo similar.

import numpy as np

#map_vector acetileno/etileno
r1, r2, r3, r4 = 0, 1, 1, 2

def gas_a_div_gas_b(a, b):
    temp =  np.inf if b == 0 else a/b
    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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180222/2622955b/attachment.html>


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