TransWikia.com

Obter nomes de uma lista que possuem tamanho igual a 4

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

2 Answers

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP