Na questão 1, existe diferença entre as linhas de código
#
inter = []
for x in lista1:
if ocorre(x,lista2):
if not ocorre(x, inter):
inter.append(x)
#
e
#
inter = []
m = len(lista1)
for i in range(m):
if ocorre(lista1[i],lista2):
if not ocorre(lista1[i], inter):
inter.append(lista1[i])
?
André