如何在 python 中的循环中更改参数的顺序
How to change order of arguments within a cycle in python
我正在尝试通过将 2 个非常相似的循环转换为一个循环来改进一些代码。这些循环之间的唯一区别基本上是将参数赋予函数的顺序。
我的代码是这样的:
for i in range(x):
for j in range(y):
sample_func(i,j)
然后我做同样的事情,但改变了函数参数的顺序:
for i in range(x):
for j in range(y):
sample_func(j,i)
有没有一种简单的方法可以将这个循环变成一个函数,该函数接收一个参数,该参数告诉在 sample_func 中输入的参数的顺序?
我希望我已经清楚了,提前谢谢你!
编辑:
for i in range(dimensions[1]):
count_b = 0
count_w = 0
len_esp = len(esp(board)[0][i])
add_esp = 0
for esp in len_esp[i]:
add_esp += esp
for k in range(1, dimensions[1] + 1):
if board_value(board, create_coordinate(i+1, k)) == 2:
count_b += 1
elif board_value(board, create_coordinate(i+1, k)) == 1:
count_w += 1
else:
return False
if add_esp != count_b or count_2 < (len_esp - 1):
return False
for i in range(dimensions[1]):
count_b = 0
count_w = 0
len_esp = len(esp(board)[1][i])
add_esp = 0
for esp in len_esp[i]:
add_esp += esp
for k in range(1, dimensions[1] + 1):
if board_value(board, create_coordinate(k, i+1)) == 2:
count_b += 1
elif board_value(board, create_coordinate(k, i+1)) == 1:
count_w += 1
else:
return False
if add_esp != count_b or count_2 < (len_esp - 1):
return False
return True
打包,必要时反转,展开。
for k in (1, -1):
sample_func(*(i, j)[::k])
也许您可以在代码中使用 python 装饰器方法。例如:
def loop(seq):
def _loop(function):
def __loop(*args,**kw):
x,y=args[0],args[1]
if seq==True:
function(x,y)
else:
function(y,x)
return __loop
return _loop
@loop(True)
def loop1(x,y):
for i in range(x):
for j in range(y):
printFunc(i,j)
loop1(3,5)
@loop(False)
def loop1(x,y):
for i in range(x):
for j in range(y):
printFunc(i,j)
loop1(3,5)
我正在尝试通过将 2 个非常相似的循环转换为一个循环来改进一些代码。这些循环之间的唯一区别基本上是将参数赋予函数的顺序。 我的代码是这样的:
for i in range(x):
for j in range(y):
sample_func(i,j)
然后我做同样的事情,但改变了函数参数的顺序:
for i in range(x):
for j in range(y):
sample_func(j,i)
有没有一种简单的方法可以将这个循环变成一个函数,该函数接收一个参数,该参数告诉在 sample_func 中输入的参数的顺序? 我希望我已经清楚了,提前谢谢你!
编辑:
for i in range(dimensions[1]):
count_b = 0
count_w = 0
len_esp = len(esp(board)[0][i])
add_esp = 0
for esp in len_esp[i]:
add_esp += esp
for k in range(1, dimensions[1] + 1):
if board_value(board, create_coordinate(i+1, k)) == 2:
count_b += 1
elif board_value(board, create_coordinate(i+1, k)) == 1:
count_w += 1
else:
return False
if add_esp != count_b or count_2 < (len_esp - 1):
return False
for i in range(dimensions[1]):
count_b = 0
count_w = 0
len_esp = len(esp(board)[1][i])
add_esp = 0
for esp in len_esp[i]:
add_esp += esp
for k in range(1, dimensions[1] + 1):
if board_value(board, create_coordinate(k, i+1)) == 2:
count_b += 1
elif board_value(board, create_coordinate(k, i+1)) == 1:
count_w += 1
else:
return False
if add_esp != count_b or count_2 < (len_esp - 1):
return False
return True
打包,必要时反转,展开。
for k in (1, -1):
sample_func(*(i, j)[::k])
也许您可以在代码中使用 python 装饰器方法。例如:
def loop(seq):
def _loop(function):
def __loop(*args,**kw):
x,y=args[0],args[1]
if seq==True:
function(x,y)
else:
function(y,x)
return __loop
return _loop
@loop(True)
def loop1(x,y):
for i in range(x):
for j in range(y):
printFunc(i,j)
loop1(3,5)
@loop(False)
def loop1(x,y):
for i in range(x):
for j in range(y):
printFunc(i,j)
loop1(3,5)