我在表格中有完整的匹配:
M=[(1,3),(2,4),(5,6)]
我想对它进行简单的换位。
功能si(M)
应该交换数字i
和i+1
的位置。
例如,s2(M)
应该交换数字2
和3
的位置:
s2(M)
应该返回:
[(1,2),(3,4),(5,6)]
最好用python3代码编写。
答案 0 :(得分:1)
对于任何好奇的人,我很快为它写了一个函数。首先,完整匹配被写为2D列表。
在写下主函数之前需要以下函数:
def index_2d(myList, v): #Returns tuple containing the position of v in the 2D list
for i, x in enumerate(myList):
if v in x:
return (i, x.index(v))
例如。如果完全匹配是M = [[1,2],[3,4],[5,6]],则index_2d(M,4)将返回(1,1)。
接下来,简单的换位功能:
def s(M,n):
a=index_2d(M,n)
b=index_2d(M,n+1)
M[a[0]][a[1]], M[b[0]][b[1]] = M[b[0]][b[1]], M[a[0]][a[1]]
return M
我并不关心效率,所以也许有更高效的代码。