Для вашего кода есть две простые оптимизации:
Используйте xrange
вместо range
. Это предотвратит создание двух временных списков.
Используйте min
и max
в параметрах для xrange
, чтобы пропустить 'if' во внешнем цикле. Итак, ваш код будет выглядеть так:
def itr(lpic, lH, lW, x, y):
'''lpic=2D-Array; lH=Row_count; lW=Column_count;'''
stack = []
range_x = xrange(max(0,x-1), min(lH,x+2))
range_y = xrange(max(0,y-1), min(lW,y+2))
append = stack.append
for i in range_x:
for j in range_y:
if lpic[i][j]=="0":
lpic[i][j] = "1"
append([i, j])
return stack
Это немного повысит производительность.