通过使用生成器理解而不是列表理解,可以使这两个函数更快、更具可比性。在s = """
import numpy as np;
x, y = np.random.rand(1000),np.random.rand(1000);
(all((x[i], y[i])) for i in range(1000)) """
timeit.timeit(s,number=1000)
0.05593514442443848
s_yours = """
import numpy as np;
x, y = np.random.rand(1000), np.random.rand(1000);
[all((x[i], y[i])) for i in range(1000)] """
timeit.timeit(s_yours,number=1000)
0.3829691410064697
s_numpy = """import numpy as np;
x, y = np.random.rand(1000), np.random.rand(1000);
(np.all((x[i], y[i])) for i in range(1000))"""
timeit.timeit(s_numpy,number=1000)
0.06155896186828613
s_your_numpy = """import numpy as np;
x, y = np.random.rand(1000), np.random.rand(1000);
[np.all((x[i], y[i])) for i in range(1000)]"""
timeit.timeit(s_your_numpy,number=1000)
12.162676811218262
Numpy可能还是比较慢的,但是就像那个家伙说的,在更大的列表中效果更好。在
还有,为什么
^{pr2}$
没有选择?在