segunda-feira, 31 de outubro de 2011

Problema 5.1

Implementar os métodos referidos pode ser feito de várias maneiras. Aqui apenas apresento a maneira mais básica. Como tempo aprenderão a fazer de outro modo recorrendo a outras construções da linguagem.

Contagem

1.def my_count(item, lista):
2.    """ Número de ocorrências do item na lista."""
3.    conta = 0
4.    for elem in lista:
5.        if elem == item:
6.            conta = conta + 1
7.    return conta

Inversão
01.def my_reverse(lista):
02.    """Inverte os elementos de uma lista. Cria uma cópia."""
03.    return lista[::-1]
04. 
05.# - variante
06.def my_reverse_b(lista):
07.    """Inverte os elementos de uma lista. Cria uma cópia."""
08.    aux = []
09.    for elem in lista:
10. aux = [elem] + aux
11.    return aux

Procura
01.def my_find(item,lista):
02.    for i in range(len(lista)):
03.        if lista[i] == item:
04.            return i
05.    return -1
06. 
07.# Variante
08.def my_find_b(item,lista):
09.    for ind, elem in enumerate(lista):
10.        if elem == item:
11.            return ind
12.    return -1

Insere
1.def my_insert(elem, pos,lista):
2.    """ Insere o elem na posição. Assume posição correcta."""
3.    return lista[:pos] + [elem] + lista[pos:]

3 comentários:

  1. Professor, penso que na função my_insert o return tenha que ser desta forma:

    return lista[:pos] + elem + lista[pos:]

    ResponderEliminar
  2. @Paulo Silva: não tem razão. A operação "+" com listas faz a concatenação (junção) de listas. Não faz de listas com elementos isolados. Experimente e veja a diferença.

    ResponderEliminar
  3. Trata-se de uma lista e não de uma string. Peço desculpa pela confusão.

    ResponderEliminar