Nessa questão precisamos classificar uma lista de glicemias entre hipoglicemia, normal, alterada e diabetes.
glicemia = [129, 82, 60, 97, 101, 65, 62, 167, 87, 53, 58, 92, 66, 120, 109, 62, 86, 96, 103, 88, 155, 52, 89, 73]
A solução proposta é a seguinte:
# Solução proposta
rotulos = [('Hipoglicemia', glicose) if glicose <= 70 else ('Normal', glicose) if glicose < 100 else ('Alterada', glicose) if glicose < 125 else ('Diabetes', glicose) for glicose in glicemia]
print(rotulos)
Minha solução foi criar uma função separada para classificar:
# Minha solução
classificacao_glicemia = {'Hipoglicemia':70,'Normal':99,'Alterada':125}
def classificar_glicemia(glicemia:float):
classificacao_glicemia = {'Hipoglicemia':70,'Normal':99,'Alterada':125}
for i in classificacao_glicemia:
if glicemia<classificacao_glicemia[i]:
return i
else:
return 'Diabetes'
[(classificar_glicemia(x), x) for x in glicemia]
Achei a resposta proposta um pouco ilegível, por mais que eu imagine que seja mais eficiente. Então fiquei em dúvida em qual seria a boa prática. Dessa forma, minhas dúvidas são:
- É mais eficiente usar a cadeia de if's e else's diretamente ou aplicar uma função?
- Existe uma estrutura mais enxuta de aplicar um retorno condicional como fiz no meu código?