Stack Overflow em Português Asked by P. Sampaio on January 4, 2022
Estou tentando resolver o seguinte problema: a partir de uma lista de nomes, preciso retornar somente os nomes com len
4.
Escrevi o código abaixo mas aparentemente o loop não está funcionando visto que, em uma lista com 4 nomes, sendo dois dentro do critério, ele só retorna um.
def nomes(x):
for i in x:
y = len(i)
nome = []
if y == 4:
nome.append(i)
return nome
Para referências futuras, você pode resolver em uma linha, com um código equivalente, utilizando a chamada compreensão de lista:
def nomes(lista, tamanho):
return [nome for nome in lista if len(nome) == tamanho]
A função recebe a lista de nomes e o tamanho desejado, que neste caso seria 4; percorre todos os nomes da lista e se o tamanho coincidir com o tamanho desejado, adiciona-o à lista de saída.
Answered by Woss on January 4, 2022
Precisa inicializar a lista fora do laço, do jeito que está fazendo cada item analisado está começando a lista do zero e perde o que já tinha feito. Sempre que encontra um problema analise o que o código está fazendo. Vai explicando o que ele faz linha por linha, faça um teste de mesa.
def nomes(x):
nome = []
for i in x:
if len(i) == 4:
nome.append(i)
return nome
print(nomes(["abc", "jose", "ana", "maria", "joao", "abcd"]))
Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.
Answered by Maniero on January 4, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP