Questão 4 · aula O que é uma compreensão de lista
Qual compreensão produz a lista dos quadrados de [1, 2, 3, 4]?
- [n for n in range(4)]
- [n * n for n in [1, 2, 3, 4]]
- [n * n in [1, 2, 3, 4]]
- (n * n for n in [1, 2, 3, 4])
Ver a resposta
Resposta: B. [n * n for n in [1, 2, 3, 4]]
A forma é [expressão for item in sequência]. Aqui a expressão é n * n (o quadrado) e a sequência é [1, 2, 3, 4], resultando em [1, 4, 9, 16]. A terceira opção não tem o for e a quarta usa parênteses, que criam um generator, não uma lista.
Estudar a aula: O que é uma compreensão de lista
Questão 5 · aula Compreensão com condição
Você quer manter só os itens positivos de uma lista. Onde vai o if?
- No início, com else, antes do for.
- No fim, sem else, depois do for.
- Tanto faz, as duas formas filtram igual.
- Não dá para filtrar em compreensão, só transformar.
Ver a resposta
Resposta: B. No fim, sem else, depois do for.
Para filtrar (descartar itens), o if vai no fim, sem else: [n for n in lista if n > 0]. O if/else no início não filtra, ele escolhe o valor de cada item e mantém todos. As duas construções fazem coisas diferentes.
Estudar a aula: Compreensão com condição
Questão 6 · aula Compreensões aninhadas
Qual compreensão achata [[1, 2], [3, 4]] em [1, 2, 3, 4]?
- [linha for linha in matriz for item in linha]
- [item for item in linha for linha in matriz]
- [item for linha in matriz for item in linha]
- [[item for item in linha] for linha in matriz]
Ver a resposta
Resposta: C. [item for linha in matriz for item in linha]
Para achatar, a expressão é item (o valor de dentro), o for de fora percorre as linhas (for linha in matriz) e o de dentro percorre os itens de cada linha (for item in linha). A opção com dois colchetes recria a lista de listas em vez de achatar.
Estudar a aula: Compreensões aninhadas
Questão 7 · aula Compreensão de dicionário
Qual compreensão cria {"a": 1, "b": 2, "c": 3} a partir de letras = "abc"?
- [letra: i for i, letra in enumerate(letras, 1)]
- {letra for letra in letras}
- {letra: i for i, letra in enumerate(letras, 1)}
- {i: letra for i, letra in enumerate(letras, 1)}
Ver a resposta
Resposta: C. {letra: i for i, letra in enumerate(letras, 1)}
A compreensão de dicionário usa chaves e o par chave: valor. Com enumerate(letras, 1), i vai de 1 e letra recebe cada caractere; o par letra: i coloca a letra como chave e o número como valor. A primeira opção usa colchetes (inválido para dicionário) e a última inverte chave e valor.
Estudar a aula: Compreensão de dicionário
Questão 8 · aula Compreensão de conjunto e a espiada em generator
O que (n * 2 for n in [1, 2, 3]) cria?
- Uma tupla (2, 4, 6).
- Uma lista [2, 4, 6].
- Um generator, que produz os valores um a um quando consumido.
- Um conjunto {2, 4, 6}.
Ver a resposta
Resposta: C. Um generator, que produz os valores um a um quando consumido.
Parênteses em uma compreensão criam uma generator expression, não uma tupla. Ela não constrói nada na memória de imediato; produz cada valor sob demanda, quando algo a percorre (como sum ou um for). É a avaliação preguiçosa, aprofundada no módulo de geradores.
Estudar a aula: Compreensão de conjunto e a espiada em generator
Questão 9 · aula Prática: transformar dados de alunos
Qual compreensão cria um dicionário {nome: media} só dos alunos com media >= 7?
- [a["nome"]: a["media"] for a in dados if a["media"] >= 7]
- {a["nome"]: a["media"] for a in dados if a["media"] >= 7}
- {a["nome"] for a in dados if a["media"] >= 7}
- {a["media"]: a["nome"] for a in dados if a["media"] >= 7}
Ver a resposta
Resposta: B. {a["nome"]: a["media"] for a in dados if a["media"] >= 7}
É uma compreensão de dicionário (chaves e o par nome: media) com if no fim para filtrar quem tem média a partir de sete. A primeira usa colchetes (inválido para dicionário), a terceira cria um conjunto (sem par) e a quarta inverte chave e valor.
Estudar a aula: Prática: transformar dados de alunos