1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | def del_dups(seq): seen = {} pos = 0 for item in seq: if item not in seen: seen[item] = True seq[pos] = item pos += 1 del seq[pos:] def del_dups_set(seq): seen = set() seen_add = seen.add pos = 0 for item in seq: if item not in seen: seen_add(item) seq[pos] = item pos += 1 del seq[pos:] lst = [8, 8, 9, 9, 7, 15, 15, 2, 20, 13, 2, 24, 6, 11, 7, 12, 4, 10, 18, 13, 23, 11, 3, 11, 12, 10, 4, 5, 4, 22, 6, 3, 19, 14, 21, 11, 1, 5, 14, 8, 0, 1, 16, 5, 10, 13, 17, 1, 16, 17, 12, 6, 10, 0, 3, 9, 9, 3, 7, 7, 6, 6, 7, 5, 14, 18, 12, 19, 2, 8, 9, 0, 8, 4, 5] def measure(func): from timeit import Timer N = 50000 setup = 'from __main__ import lst, del_dups, del_dups_set' t = Timer('%s(lst[:])' % (func,), setup) print("%s: %.2f us" % (func, 1e6*min(t.repeat(number=N))/N,)) if __name__=="__main__": measure('del_dups') measure('del_dups_set') |
ZGVmIGRlbF9kdXBzKHNlcSk6CiAgICBzZWVuID0ge30KICAgIHBvcyA9IDAKICAgIGZvciBpdGVtIGluIHNlcToKICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZWVuOgogICAgICAgICAgICBzZWVuW2l0ZW1dID0gVHJ1ZQogICAgICAgICAgICBzZXFbcG9zXSA9IGl0ZW0KICAgICAgICAgICAgcG9zICs9IDEKICAgIGRlbCBzZXFbcG9zOl0KCmRlZiBkZWxfZHVwc19zZXQoc2VxKToKICAgIHNlZW4gPSBzZXQoKQogICAgc2Vlbl9hZGQgPSBzZWVuLmFkZAogICAgcG9zID0gMAogICAgZm9yIGl0ZW0gaW4gc2VxOgogICAgICAgIGlmIGl0ZW0gbm90IGluIHNlZW46CiAgICAgICAgICAgIHNlZW5fYWRkKGl0ZW0pCiAgICAgICAgICAgIHNlcVtwb3NdID0gaXRlbQogICAgICAgICAgICBwb3MgKz0gMQogICAgZGVsIHNlcVtwb3M6XQoKbHN0ID0gWzgsIDgsIDksIDksIDcsIDE1LCAxNSwgMiwgMjAsIDEzLCAyLCAyNCwgNiwgMTEsIDcsIDEyLCA0LCAxMCwgMTgsCiAgICAgICAxMywgMjMsIDExLCAzLCAxMSwgMTIsIDEwLCA0LCA1LCA0LCAyMiwgNiwgMywgMTksIDE0LCAyMSwgMTEsIDEsCiAgICAgICA1LCAxNCwgOCwgMCwgMSwgMTYsIDUsIDEwLCAxMywgMTcsIDEsIDE2LCAxNywgMTIsIDYsIDEwLCAwLCAzLCA5LAogICAgICAgOSwgMywgNywgNywgNiwgNiwgNywgNSwgMTQsIDE4LCAxMiwgMTksIDIsIDgsIDksIDAsIDgsIDQsIDVdCgpkZWYgbWVhc3VyZShmdW5jKToKICAgIGZyb20gdGltZWl0IGltcG9ydCBUaW1lcgoKICAgIE4gPSA1MDAwMAogICAgc2V0dXAgPSAnZnJvbSBfX21haW5fXyBpbXBvcnQgbHN0LCBkZWxfZHVwcywgZGVsX2R1cHNfc2V0JwogICAgdCA9IFRpbWVyKCclcyhsc3RbOl0pJyAlIChmdW5jLCksIHNldHVwKQogICAgcHJpbnQoIiVzOiAlLjJmIHVzIiAlIChmdW5jLCAxZTYqbWluKHQucmVwZWF0KG51bWJlcj1OKSkvTiwpKQoKaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICBtZWFzdXJlKCdkZWxfZHVwcycpCiAgICBtZWFzdXJlKCdkZWxfZHVwc19zZXQnKQo=
-
upload with new input
-
result: Success time: 4.01s memory: 10864 kB returned value: 0
del_dups: 13.36 us del_dups_set: 12.72 us
-
result: Success time: 7.16s memory: 6728 kB returned value: 0
del_dups: 24.15 us del_dups_set: 23.15 us


