Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import collections
- import random
- import time
- # choper le premier entier unique de la liste
- # a = [1, 2, 5, 9, 6, 7, 1, 5, 2, 8, 9, 6]
- i1 = random.randint(0, 9999)
- i2 = random.randint(0, 9999)
- print(i1, i2)
- a = [i for i in range(10000)]
- b = [i for i in range(10000)]
- b.remove(i1)
- b.remove(i2)
- a = a + b
- def timeit(func):
- def wrapper(*args, **kwargs):
- print('calling {}'.format(func.__name__))
- start = time.time()
- index = func(*args, **kwargs)
- print('{} took {} seconds'.format(func.__name__, time.time() - start))
- return index
- return wrapper
- @timeit
- def get_index_set(array):
- for entier in set(array):
- if array.count(entier) == 1:
- return array.index(entier)
- # ma méthode
- @timeit
- def get_index(array):
- for index, entier in enumerate(array):
- if array.count(entier) == 1:
- return index
- # la méthode du mec
- # plus performant - de boucles
- @timeit
- def get_u_index(array):
- list_u = collections.OrderedDict()
- for index, entier in enumerate(array):
- list_u.setdefault(entier, {'index': index, 'count': 0})
- list_u[entier]['count'] += 1
- for (entier, ele) in list_u.items():
- if ele['count'] == 1:
- return ele['index']
- print(get_u_index(a))
- print(get_index(a))
- print(get_index_set(a))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement