基于你的f3版本,我用代码玩过。因为L和R是常量,所以可以避免在g1循环中计算它们。也使用新的
三元中频
而不是最小值和最大值似乎总是更快。也可以用左上角简化表达式。在我的系统中,使用下面的代码大约快20%。
def f3b(x,y,n,z):
rows = [g1(x, y, z) for x, y in [(int(x*random.random()), int(y*random.random())) for i in range(n)]]
def g1(x, y, z):
l = y - z if y - z > 0 else 0
r = y + z if y + z < 1024 else 1024
for i in xrange(x - z if x - z > 0 else 0, x + z if x + z < 1024 else 1024 ):
rows[i][l:r] = [j+(j<255) for j in rows[i][l:r]]