Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida sobre o tipo de dado e variável local no for.

Na questão sobre List Comprehension me surgiu a dúvida nessa parte:

#enunciado
frutas = ["maçã", "banana", "laranja", "melancia"]

lista = []
for fruta in frutas:
    lista.append(fruta.upper())

#resposta usando List Comprehension
lista = [fruta.upper() for fruta in frutas]

Não consegui identificar que tipo de dados por exemplo, é fruta nem como fruta recebe a string dos índices de frutas. Eu entendi (quer dizer...parece q eu entendi) q o laço acontece percorrendo a lista frutas, índice por índice. Mas me enrolei como fruta funciona. Não sei se consegui explicar minha dúvida.

6 respostas

Oi, Ronniery

O que acontece é o seguinte, o python consegue identificar o tipo de variável que está sendo passada, se você fizer

print(type(frutas))

ele apontará que é uma list. No trecho acima ele está percorrendo cada item dentro de frutas, mudando para letras maiúsculas e jogando dentro de

lista = []

uma lista que contém os elementos do mesmo tipo de frutas[].

Oi Leonardo, já agradecendo a resposta, e sobre usar o type, eu sei e entendi q no python essa parte de não precisar deixar explícito o tipo também. A dúvida é mais sobre a variável local: fruta. O type usando com fruta não dá resultado, e sim um erro, e isso pq eu pensei ser devido ela ser uma variável local do for. A leitura desse trecho:

lista = [fruta.upper() for fruta in frutas]

como seria a forma verbal mais correta de ler essa linha? (Eu entendi o upper, e o in q serve pra verificar fruta (declarada no for) dentro da list frutas, e q lista vazia, vai adicionando fruta na própria lista uma a uma), mas como o for trabalha essa variável local fruta internamente? (Talvez seja uma dúvida q não precise de minha atenção, pois aparentemente é uma dúvida de como o for do python trabalha por debaixo dos panos).

Esse for é equivalente a um foreach em outras linguagens, então com

lista = [fruta.upper() for fruta in frutas]

eu estou dizendo: para cada elemento (que eu vou tratar dentro do meu for como fruta) dentro da minha lista frutas[], transforme em uppercase e guarde em lista[].

Acho que entendi agora. No caso, a variável declarada no for (essa fruta q vai ser tratada, nesse exemplo a variável local do for fruta é do tipo srt certo?), recebe o conteúdo dos índices da list frutas e da um upper. E ai o laço acontece até o tamanho da list frutas? Por exemplo: No começo do for usando o List Comprehension,

fruta.upper() 
# recebe o índice 0 = maça, e deixa caixa alta
#e então é armazenado na lista que esta vazia até então.

Na próxima iteração:

fruta.upper()    
#recebe o índice 1 = banana, e deixa em caixa alta também
#e então armazena na lista também. E essa iteração vai #até o índice 3, que n caso é o tamanho da list frutas?

Só pra finalizar, seria isso?

solução!

Exato! Caso você de um print no tipo de fruta dentro do for assim:

for fruta in frutas:
    print(type(fruta))

vai ver que ele aponta a variável local fruta como uma string, uma linha para cada iteração.

Espero ter ajudado :)

Puxa, ajudou demais cara. Sem falar q até pra eu tentar explicar minha dúvida, já ajuda também kkk. Valeu mesmo.