comp: ~ $ python Python 2.7.6 (по умолчанию, 22 июня 2015, 17:58:13) [GCC 4.8.2] на linux2
>>> import timeit
>>> timeit.timeit("[x for x in xrange(1000000) if x%4]",number=100)
5.656799077987671
>>> timeit.timeit("[x for x in xrange(1000000) if x%4]",number=100)
5.579368829727173
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=100)
21.54827117919922
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=100)
22.014557123184204
С номером времени = 1 параметр:
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=1)
] 0.2245171070098877
>>> timeit.timeit("[x for x in xrange(1000000) if x%4]",number=1)
0.10750913619995117
comp: ~ $ python3 Python 3.4.3 (по умолчанию, окт. 14 2015, 20:28:29) [GCC 4.8.4] on linux
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=100)
9.113872020003328
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=100)
9.07014398300089
С временным номером = 1,2,3,4 параметр работает быстро и линейно:
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=1)
0.09329321900440846
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=2)
0.18501482300052885
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=3)
0.2703447980020428
>>> timeit.timeit("[x for x in range(1000000) if x%4]",number=4)
0.36209142999723554
So кажется, что если мы измеряем 1 цикл цикла цикла, например timeit.timeit («[x для x в диапазоне (1000000), если x% 4]», число = 1) (как мы фактически используем в реальном коде), python3 работает достаточно быстро, но в повторяющихся циклах python 2 xrange () выигрывает по скорости от range () от python 3.