我的代码包含多行嵌套 for 循环。我想尝试通过将代码放入类似于do_for_each
下面的函数的自己的函数中来减少调用的嵌套 for 循环的数量。在嵌套的 for 循环中,我想调用另一个函数。下面是一个工作示例:
def do_for_each(self, func, h, w, init_data):
for x in range(1, h):
for y in range(1, w):
init_data[x,y] = func(x, y)
return init_data
def calculate_land_neighbours(self, x, y):
return self.lscape[x-1,y] + self.lscape[x+1,y] + self.lscape[x,y-1] + self.lscape[x,y+1]
ouput = self.do_for_each(self.calculate_land_neighbours, self.h+1, self.w+1, data)
do_for_each
但是,当调用的函数不带参数x
或y
另一个变量时,我的问题就出现了。例如,一个新函数如下所示:
def add_to_density_array(self, seed):
if seed == 0:
return 0
else:
return random.uniform(0, 5.0)
output2 = self.do_for_each(self.add_to_density_array, self.h+1, self.w+1, data, seed)
为了使其正常运行,我需要将我的do_for_each
功能修改为:
def do_for_each(self, func, h, w, init_data, seed):
for x in range(1, h):
for y in range(1, w):
init_data[x,y] = func(seed)
return init_data
有人有什么建议可以让我保留do_for_each
函数的模块化代码,但在其中调用函数do_for_each
没有相同的输入参数吗?