from collections import Counter
def set1(lista):
return len(set(lista)) != len(lista)
def set2(lista):
s = set()
return any(x in s or s.add(x) for x in lista)
def counter(lista):
return len(Counter(lista)) != len(lista)
def sublista(lista):
for posicao, numero in enumerate(lista):
if numero in lista[posicao+1:]:
return True
else:
return False
from timeit import timeit
listas = [ [1, 9, 2, 4, 3, 3, 2], [1, 2, 3, 4, 5, 6, 7] ]
funcoes = ['set1', 'set2', 'counter', 'sublista']
# executa 100 mil vezes cada teste
for func in funcoes:
print(f'{func:>8}', timeit(f'for lista in listas:\n\t{func}(lista)', number=100000, globals=globals()))
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlcgoKZGVmIHNldDEobGlzdGEpOgogICAgcmV0dXJuIGxlbihzZXQobGlzdGEpKSAhPSBsZW4obGlzdGEpCgpkZWYgc2V0MihsaXN0YSk6CiAgICBzID0gc2V0KCkKICAgIHJldHVybiBhbnkoeCBpbiBzIG9yIHMuYWRkKHgpIGZvciB4IGluIGxpc3RhKQoKZGVmIGNvdW50ZXIobGlzdGEpOgogICAgcmV0dXJuIGxlbihDb3VudGVyKGxpc3RhKSkgIT0gbGVuKGxpc3RhKQoKZGVmIHN1Ymxpc3RhKGxpc3RhKToKICAgIGZvciBwb3NpY2FvLCBudW1lcm8gaW4gZW51bWVyYXRlKGxpc3RhKToKICAgICAgICBpZiBudW1lcm8gaW4gbGlzdGFbcG9zaWNhbysxOl06CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQoKZnJvbSB0aW1laXQgaW1wb3J0IHRpbWVpdAoKbGlzdGFzID0gWyBbMSwgOSwgMiwgNCwgMywgMywgMl0sIFsxLCAyLCAzLCA0LCA1LCA2LCA3XSBdCmZ1bmNvZXMgPSBbJ3NldDEnLCAnc2V0MicsICdjb3VudGVyJywgJ3N1Ymxpc3RhJ10KIyBleGVjdXRhIDEwMCBtaWwgdmV6ZXMgY2FkYSB0ZXN0ZQpmb3IgZnVuYyBpbiBmdW5jb2VzOgogICAgcHJpbnQoZid7ZnVuYzo+OH0nLCB0aW1laXQoZidmb3IgbGlzdGEgaW4gbGlzdGFzOlxuXHR7ZnVuY30obGlzdGEpJywgbnVtYmVyPTEwMDAwMCwgZ2xvYmFscz1nbG9iYWxzKCkpKQ==