Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

nuno35

Funções de ordem superior

Mensagens Recomendadas

nuno35    0
nuno35

Bom dia 

Tenho aqui uma funçao que é suposto devolver true or false se um elemento ocorrer numa lista, faze isto so com funçoes de ordem superior sem iteraçao recursao e sem o operador in

de momento tenho assim mas devolve me sempre False

def ocorre(lista,elemento):
    return reduce(lambda x:x==elemento,lista,0)

Desde ja obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nilo Menezes    3
Nilo Menezes

Em Python nem precisa criar função, basta utilizar o operador in:

elemento in lista

Nem reduce, nem filter, nem map são bons para esta finalidade.

Se você quiser realmente usar o reduce, teria que ser algo assim:

def ocorre(elemento, lista):
    return reduce(lambda anterior, corrente: anterior or corrente == elemento, lista, False)

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    313
Rui Carlos

Uma solução baseada no filter também é bastante simples:

def ocorre(l,e):
    return bool(filter(lambda x:x==e, l))

Basicamente a ideia é filtrar os elementos iguais ao procurado, e no final verificar se o resultado é ou não uma lista vazia.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade