如何在 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)