# Comparing short lists a = [1, 2, 3, 4, 5] b = [9, 8, 7, 6, 5] compare_bitwise(a, b) compare_listcomp(a, b) compare_intersect(a, b)
# Comparing longer lists import random a = random.sample(xrange(100000), 10000) b = random.sample(xrange(100000), 10000) compare_bitwise(a, b) compare_listcomp(a, b) compare_intersect(a, b)
Это результаты на моей машине:
# Short list: compare_bitwise took 10.145 ms compare_listcomp took 11.157 ms compare_intersect took 7.461 ms
# Long list: compare_bitwise took 11203.709 ms compare_listcomp took 17361.736 ms compare_intersect took 6833.768 ms
Очевидно, что к любому искусственному тестированию производительности следует относиться со всей серьезностью, но поскольку set().intersection() ответпо крайней мере такой же быстрый, как и другие решения, а также наиболее читаемый, он должен быть стандартным решением для этой распространенной проблемы.
Ответ 4
Я предпочитаю ответы на основе набора, но вот тот, который работает в любом случае