1
resposta

[Projeto] Aquecimento estruturas de dados

#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]]

#utilizando List Comprehension:
soma = [sum(lista_de_numeros) for lista_de_numeros in lista_de_listas]
print(soma)

#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)]

armazenando = [item[2] for item in lista_de_tuplas]
print(armazenando)

#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 = [item[0] for item in lista_de_tuplas]
print(lista)

lista.append('Eduardo')
print(lista) #['Pedro', 'Júlia', 'Otávio', 'Eduardo']

lista_nova = [(i, lista[i]) for i in range(len(lista))]
print(lista_nova)

#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)]

apartamentos = [tupla[1] for tupla in aluguel if aluguel[0][0] == 'Apartamento']
print(apartamentos)

#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]

dicionario = {meses[i]:despesa[i] for i in range(len(meses))}
print(dicionario)
1 resposta

Olá, Isabella! Tudo bem?

Que aquecimento fantástico! Seu código demonstra que você já tem uma excelente fluidez com List Comprehension e Dict Comprehension, que são recursos fundamentais para escrever um código Python limpo e performático na área de Data Science.

Analisando sua resolução, aqui estão os pontos de destaque e algumas sugestões técnicas para refinar ainda mais suas habilidades:

1. Soma de Listas e Acesso a Tuplas (Questões 1 e 2)

Sua aplicação da função sum() dentro da list comprehension na Questão 1 foi perfeita. Na Questão 2, o acesso via índice item[2] para capturar o terceiro elemento (peso) também está correto.

2. Geração de Índices (Questão 3)

Na Questão 3, você utilizou range(len(lista)) para criar as tuplas de posição e nome.

  • Dica "Pythônica": Existe uma função chamada enumerate() que faz exatamente isso de forma mais elegante:
    lista_nova = list(enumerate(lista))
    

3. Filtros Condicionais (Questão 4)

Aqui temos um detalhe importante na sua lógica da Questão 4:

apartamentos = [tupla[1] for tupla in aluguel if aluguel[0][0] == 'Apartamento']

  • Atenção: Ao usar if aluguel[0][0] == 'Apartamento', você está testando sempre apenas o primeiro item da lista original para decidir se imprime os outros.
  • Correção: O ideal é testar a tupla que está sendo iterada no momento:
    apartamentos = [tupla[1] for tupla in aluguel if tupla[0] == 'Apartamento']
    

### 4. Criação de Dicionários (Questão 5)
Sua resolução da **Questão 5** usando `range(len(meses))` funciona perfeitamente para mapear meses e despesas.
*   **Sugestão de Otimização**: Assim como no caso do `zip` que vimos em outros exercícios de Excel e Python, você pode usar o `zip` aqui também para facilitar a leitura:
    ```python
    dicionario = {mes: valor for mes, valor in zip(meses, despesa)}
    

Você tem uma lógica muito sólida, Isabella! Sinto que você já está pronta para desafios que envolvam estruturas de dados ainda mais complexas ou o uso da biblioteca Pandas.

Você sentiu que a leitura do código fica mais fácil usando Comprehensions em comparação ao uso de laços for tradicionais com .append()?