Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] 03_Estrutura_de_dados_Python _ Hora da Prática 01/02/03/04/05/06/07

## 1. Crie um código para imprimir a soma dos elementos de cada uma das listas contidas na seguinte lista:
lista_de_listas = [[4,6,5,9], [1,0,7,2], [3,4,1,8]]
## 2. Crie um código para gerar uma lista que armazena o terceiro elemento de cada tupla contida na seguinte lista de tuplas:
lista_de_tuplas = [('Pedro', 1.74, 81), ('Júlia', 1.65, 67), ('Otávio', 1.81, 83)]

# Extrair, armazenar e imprimir a posição 1 do tupla
for tupla in lista_de_tuplas:
    terceiro_elemento = tupla[1]
    print(terceiro_elemento)
## 3. A partir da lista: lista = ['Pedro', 'Júlia', 'Otávio', 'Eduardo'], crie um código para gerar uma lista de tuplas em que cada tupla tenha o primeiro elemento como a posição do nome na lista original e o segundo elemento sendo o próprio nome.
lista = ['Pedro', 'Júlia', 'Otávio', 'Eduardo']

# Extrair primeira letra do nome
primeira_letra = list(map(lambda x: x[0], lista))
# Unificar letra inicial e nomes na tupla e imprimir
print(list(zip(primeira_letra, lista)))
## 4. Crie uma lista usando o list comprehension que armazena somente o valor numérico de cada tupla caso o primeiro elemento seja 'Apartamento', a partir da seguinte lista de tuplas:
aluguel = [('Apartamento', 1700), ('Apartamento', 1400), ('Casa', 2150), ('Apartamento', 1900), ('Casa', 1100)]

# Lista com a posição 1 das tuplas Apartamento
apartamento = [i[1] for i in aluguel if i[0] == 'Apartamento']
print(apartamento)
## 5. Crie um dicionário usando o dict comprehension em que as chaves estão na lista meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'] e os valores estão em despesa = [860, 490, 1010, 780, 900, 630, 590, 770, 620, 560, 840, 360].
meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
despesa = [860, 490, 1010, 780, 900, 630, 590, 770, 620, 560, 840, 360]

# dict comprehension
meses_despesas = {mes: despesa[i] for i, mes in enumerate(meses)}
print(meses_despesas)
## 6. Uma loja possui um banco de dados com a informação de venda de cada representante e de cada ano e precisa filtrar somente os dados do ano 2022 com venda maior do que 6000. A loja forneceu uma amostra contendo apenas as colunas com os anos e os valores de venda para que você ajude a realizar a filtragem dos dados a partir de um código:
vendas = [('2023', 4093), ('2021', 4320), ('2021', 5959), ('2022', 8883), ('2023', 9859),
          ('2022', 5141), ('2022', 7688), ('2022', 9544), ('2023', 4794), ('2021', 7178),
          ('2022', 3030), ('2021', 7471), ('2022', 4226), ('2022', 8190), ('2021', 9680), ('2022', 5616)]

representantes = {}
vendas_2022 = []
ref = 6000

# Adiciona vendas de 2022 maiores que o valor de referência (list comprehension)
vendas_2022 = [venda for ano, venda in vendas if ano == '2022' and venda > ref]

# Gera nomes de representantes com letras (A, B, C, D, ...)
from string import ascii_uppercase

for i, venda in enumerate(vendas_2022):
    representante = ascii_uppercase[i]  # Gera A, B, C, ...
    representantes[representante] = venda

# Ordena os representantes por suas vendas em ordem decrescente
representantes = dict(sorted(representantes.items(), key=lambda item: item[1], reverse=True))

# Exibe os representantes e suas vendas
for representante, venda in representantes.items():
    print(f'Representante {representante}: {venda}')
## 7. 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: 
classificacao = ('Hipoglicemia', 'Normal', 'Alterada', 'Diabetes')
indices = [(0, 69), (70, 99), (100, 125), (126, float('inf'))]
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]

# Converte em tupla a glicemia
glicemia = tuple(glicemia)

# Unifica a classificação e os índices
classificacao_indices = list(zip(classificacao, indices))

# Classifica os valores de glicemia e converte o resultado em tupla
glicemia_classificada = tuple(
    (classificacao[i], valor) for valor in glicemia for i, (classe, (minimo, maximo)) in enumerate(classificacao_indices) if minimo <= valor <= maximo
)

# Imprime os resultados
for classe, valor in glicemia_classificada:
    print(f'{valor} - {classe}')

# Imprime as estatísticas
print(f'\nEstatísticas:\n{"-" * 20}')
for classe, (minimo, maximo) in classificacao_indices:
    total = sum(1 for valor in glicemia if minimo <= valor <= maximo)
    porcentagem = (total / len(glicemia)) * 100
    print(f'{classe}: {total} ({porcentagem:.2f}%)')
print(f'\n{"-" * 20}')
1 resposta
solução!

Oi, Marinaldo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu código está bem estruturado e mostra domínio sobre list comprehension, uso de zip, enumerate, e até manipulação de dicionários com ordenação. Essa variedade de estruturas mostra uma ótima compreensão dos recursos do Python.

Uma dica interessante para o futuro é usar sum() com map() para somar diretamente os valores de várias listas, como neste exemplo:


lista_de_listas = [[4,6,5,9], [1,0,7,2], [3,4,1,8]]
somas = list(map(sum, lista_de_listas))
print(somas)

Esse código usa sum para somar os elementos de cada lista interna e map para aplicar isso em todas. O resultado será [24, 10, 16].

Continue assim!

Qualquer dúvida que surgir, compartilhe no fórum.

Abraços e bons estudos!

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!