Bom dia, pessoal.
Estudando o curso Python para Dados: trabalhando com funções, estruturas de dados e exceções, tive contato com os recursos da linguagem Python map e list comprehetion, e pude notar que muitos problemas de organizar informações em listas podem ser resolvidos com ambas os recursos. Como exemplo, deixei aqui a resposta da atividade 7 da aula 3 desse curso.
Problema
- Uma clínica analisa dados de pacientes e armazena o valor numérico da glicose em um banco de dados e gostaria de rotular os dados da seguinte maneira:
- Glicose igual ou inferior a 70: 'Hipoglicemia'
- Glicose entre 70 a 99: 'Normal'
- Glicose entre 100 e 125: 'Alterada'
- Glicose superior a 125: 'Diabetes'
A clínica disponibilizou parte dos valores e sua tarefa é criar uma lista de tuplas usando list comprehension contendo o rótulo e o valor da glicemia em cada tupla.
Código da solução
from pprint import pprint
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]
def get_label(value):
if value <= 70:
return 'Hipoglicemia'
elif value <= 99:
return 'Normal'
elif value <= 125:
return 'Alterada'
else:
return 'Diabetes'
# Usando List Comprehetion
labels = [get_label(value) for value in glicemia]
print(f"{' Resultado usando list comprehention ':=^80}")
pprint(labels)
# Usando Map
labels = list(map(get_label, glicemia))
print(f"{' Resultado usando map ':=^80}")
pprint(labels)
Resultado
==================== Resultado usando list comprehention =====================
['Diabetes',
'Normal',
'Hipoglicemia',
'Normal',
'Alterada',
'Hipoglicemia',
'Hipoglicemia',
'Diabetes',
'Normal',
'Hipoglicemia',
'Hipoglicemia',
'Normal',
'Hipoglicemia',
'Alterada',
'Alterada',
'Hipoglicemia',
'Normal',
'Normal',
'Alterada',
'Normal',
'Diabetes',
'Hipoglicemia',
'Normal',
'Normal']
============================ Resultado usando map ============================
['Diabetes',
'Normal',
'Hipoglicemia',
'Normal',
'Alterada',
'Hipoglicemia',
'Hipoglicemia',
'Diabetes',
'Normal',
'Hipoglicemia',
'Hipoglicemia',
'Normal',
'Hipoglicemia',
'Alterada',
'Alterada',
'Hipoglicemia',
'Normal',
'Normal',
'Alterada',
'Normal',
'Diabetes',
'Hipoglicemia',
'Normal',
'Normal']
Diante dessa percepção, eu gostaria de discutir se existe algum modo preferencial de resolver esse problema, o que o pessoal do mercado diz em relação a isso do ponto de vista de desempenho e legibilidade do código.
Atentamente,
Myke Albuquerque Pinto de Oliveira