Exclusão de todos itens númereo procurado

Home Fóruns Fórum Estrutura de Dados e Algoritmos em Python: O Guia Completo Exclusão de todos itens númereo procurado

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #21530
    snifferchess
    Participante

      Bom dia

      Pensei numa lista onde eu tenha o mesmo número repetido, mas queira excluir todos que estou procurando, não somente o primeiro que encontrar, então pensei em chamar  o método de exclusão várias vezes, então pensei num modo recursivo, mas não deu muito certo, pois ele excluiu

      outros números da lista também

      vetor = VetorNaoOrdenado(10)
      vetor.insere(2)
      vetor.insere(3)
      vetor.insere(5)
      vetor.insere(8)
      vetor.insere(1)
      vetor.insere(7)
      vetor.imprime()
      0 - 2
      1 - 3
      2 - 5
      3 - 8
      4 - 1
      5 - 7
      vetor.insere(5)
      vetor.insere(3)
      vetor.insere(5)
      vetor.imprime()
      0 - 2
      1 - 3
      2 - 5
      3 - 8
      4 - 1
      5 - 7
      6 - 5
      7 - 3
      8 - 5
      Vejam que agora alguns números aparecem  mais de uma vez na lista, (3 e 5 por exemplo), então pensei implementar um outro método chamado excluir2 que excluiria todos números da lista que estou procurando, tentei implementar como abaixo:
       def excluir2(self,valor):
      posicao = self.pesquisar(valor)
      if posicao == -1:
      return -1
      else:
      for i in range(posicao,self.ultima_posicao):
      self.valores[i] = self.valores[i+1]
      self.ultima_posicao -=1
      while posicao != -1:
      posicao =self.excluir2(valor)
      
      , mas ao tentar chamar
      vetor.excluir2(5)
      vetor.imprime()
      0 - 2
      1 - 3
      2 - 8
      
       Realmente algo deu errado, sendo assim,  qual a melhor maneira de fazer o que estou querendo, por favor , não quero o código 
      pronto,mas somente alguma(s) dica(s), e se o modo recursivo não serve
      
      
      Grato
      #21531
      Jones Granatyr
      Moderador

        Opa, boa tarde!

        Chamar a função mais vezes não é muito bom por causa do desempenho, pois precisará executar a pesquisa linear novamente a cada nova chamada. Ao invés de fazer a recursão, depois de apagar o primeiro número poderia criar um marcador e “reiniciar” o código (talvez uma estrutura de repetição)

        Jones

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.