from timeit import timeit
import re
lst = [123456, 889756, 854123, 997886, 634178] * 10000
def has_duplicates(n):
s = 0
while n:
d = n % 10
if (1<<d) & s:
return True
s |= 1<<d
n = n // 10
return False
def f(lst):
return [i for i in lst if not has_duplicates(i)]
def re_method(lst):
r = re.compile(r"(\d).*\1")
return [i for i in lst if not r.search(str(i))]
def trincot1(lst):
return [n for n in lst if len(set(str(n))) == len(str(n))]
def afaalgo(lst):
answer = []
for value in lst:
value = str(value)
new_list = []
for nums in value:
new_list.append(nums)
if sorted(list(set(new_list))) == sorted(new_list):
answer.append(int(value))
return answer
t0 = timeit(lambda: f(lst), number=10)
t1 = timeit(lambda: re_method(lst), number=10)
t2 = timeit(lambda: trincot1(lst), number=10)
t4 = timeit(lambda: afaalgo(lst), number=10)
print(t0)
print(t1)
print(t2)
print(t4)
ZnJvbSB0aW1laXQgaW1wb3J0IHRpbWVpdAppbXBvcnQgcmUKCgpsc3QgPSBbMTIzNDU2LCA4ODk3NTYsIDg1NDEyMywgOTk3ODg2LCA2MzQxNzhdICogMTAwMDAKCmRlZiBoYXNfZHVwbGljYXRlcyhuKToKICBzID0gMAogIHdoaWxlIG46CiAgICBkID0gbiAlIDEwCiAgICBpZiAoMTw8ZCkgJiBzOgogICAgICByZXR1cm4gVHJ1ZQogICAgcyB8PSAxPDxkCiAgICBuID0gbiAvLyAxMAogIHJldHVybiBGYWxzZQoKZGVmIGYobHN0KToKICByZXR1cm4gW2kgZm9yIGkgaW4gbHN0IGlmIG5vdCBoYXNfZHVwbGljYXRlcyhpKV0KCgpkZWYgcmVfbWV0aG9kKGxzdCk6CiAgICByID0gcmUuY29tcGlsZShyIihcZCkuKlwxIikKICAgIHJldHVybiBbaSBmb3IgaSBpbiBsc3QgaWYgbm90IHIuc2VhcmNoKHN0cihpKSldCgoKZGVmIHRyaW5jb3QxKGxzdCk6CiAgICByZXR1cm4gW24gZm9yIG4gaW4gbHN0IGlmIGxlbihzZXQoc3RyKG4pKSkgPT0gbGVuKHN0cihuKSldCgoKZGVmIGFmYWFsZ28obHN0KToKICAgIGFuc3dlciA9IFtdCiAgICBmb3IgdmFsdWUgaW4gbHN0OgogICAgICAgIHZhbHVlID0gc3RyKHZhbHVlKQogICAgICAgIG5ld19saXN0ID0gW10KICAgICAgICBmb3IgbnVtcyBpbiB2YWx1ZToKICAgICAgICAgICAgbmV3X2xpc3QuYXBwZW5kKG51bXMpCiAgICAgICAgaWYgc29ydGVkKGxpc3Qoc2V0KG5ld19saXN0KSkpID09IHNvcnRlZChuZXdfbGlzdCk6CiAgICAgICAgICAgIGFuc3dlci5hcHBlbmQoaW50KHZhbHVlKSkKICAgIHJldHVybiBhbnN3ZXIKCnQwID0gdGltZWl0KGxhbWJkYTogZihsc3QpLCBudW1iZXI9MTApCnQxID0gdGltZWl0KGxhbWJkYTogcmVfbWV0aG9kKGxzdCksIG51bWJlcj0xMCkKdDIgPSB0aW1laXQobGFtYmRhOiB0cmluY290MShsc3QpLCBudW1iZXI9MTApCnQ0ID0gdGltZWl0KGxhbWJkYTogYWZhYWxnbyhsc3QpLCBudW1iZXI9MTApCgpwcmludCh0MCkKcHJpbnQodDEpCnByaW50KHQyKQpwcmludCh0NCk=