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


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

Inversão

def my_reverse(lista):
"""Inverte os elementos de uma lista. Cria uma cópia."""
return lista[::-1]

# - variante
def my_reverse_b(lista):
"""Inverte os elementos de uma lista. Cria uma cópia."""
aux = []
for elem in lista:
aux = [elem] + aux
return aux

Procura

def my_find(item,lista):
for i in range(len(lista)):
if lista[i] == item:
return i
return -1

# Variante
def my_find_b(item,lista):
for ind, elem in enumerate(lista):
if elem == item:
return ind
return -1

Insere

def my_insert(elem, pos,lista):
""" Insere o elem na posição. Assume posição correcta."""
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