在元组列表中交换两个数字(python)

时间:2015-07-13 06:55:29

标签: python python-3.x

我在表格中有完整的匹配:

M=[(1,3),(2,4),(5,6)]

我想对它进行简单的换位。

功能si(M)应该交换数字ii+1的位置。

例如,s2(M)应该交换数字23的位置:

s2(M)应该返回:

[(1,2),(3,4),(5,6)]

最好用python3代码编写。

1 个答案:

答案 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

我并不关心效率,所以也许有更高效的代码。