from collections import Counter, defaultdict
import random
import timeit
data = [random.randint(0, 9) for _ in range(1000)]
def ex1():
c = Counter(data)
return [i for i in data if c[i] > 1]
def ex2():
return [i for i in data if data.count(i) > 1]
def ex3():
c = defaultdict(int)
for i in data:
c[i] += 1
return [i for i in data if c[i] > 1]
if __name__ == '__main__':
print('ex1', timeit.timeit(ex1, number=30))
print('ex2', timeit.timeit(ex2, number=30))
print('ex3', timeit.timeit(ex3, number=30))
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlciwgZGVmYXVsdGRpY3QKaW1wb3J0IHJhbmRvbQppbXBvcnQgdGltZWl0CgoKZGF0YSA9IFtyYW5kb20ucmFuZGludCgwLCA5KSBmb3IgXyBpbiByYW5nZSgxMDAwKV0KCgpkZWYgZXgxKCk6CiAgICBjID0gQ291bnRlcihkYXRhKQogICAgcmV0dXJuIFtpIGZvciBpIGluIGRhdGEgaWYgY1tpXSA+IDFdCgoKZGVmIGV4MigpOgogICAgcmV0dXJuIFtpIGZvciBpIGluIGRhdGEgaWYgZGF0YS5jb3VudChpKSA+IDFdCiAgICAKCmRlZiBleDMoKToKICAgIGMgPSBkZWZhdWx0ZGljdChpbnQpCgogICAgZm9yIGkgaW4gZGF0YToKICAgCQljW2ldICs9IDEKCiAgICByZXR1cm4gW2kgZm9yIGkgaW4gZGF0YSBpZiBjW2ldID4gMV0KCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgcHJpbnQoJ2V4MScsIHRpbWVpdC50aW1laXQoZXgxLCBudW1iZXI9MzApKQogICAgcHJpbnQoJ2V4MicsIHRpbWVpdC50aW1laXQoZXgyLCBudW1iZXI9MzApKQogICAgcHJpbnQoJ2V4MycsIHRpbWVpdC50aW1laXQoZXgzLCBudW1iZXI9MzApKQo=