2015-07-13 35 views
-5

我在形成完整配套:
交换中的元组(蟒蛇)名单的两个数字

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

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

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

例如s2(M)应该交换号码23的位置:

s2(M)应返回:

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

优选地写在python3代码。

+5

SO不是一个要求随机的人为你做你的工作的地方..请尝试自己编码,如果你遇到任何问题询问他们。 –

+1

非常好。因此,编写一些代码,如果遇到问题,请写一个主题问题并将其发布到此处。 – juanchopanza

+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 

我不关心效率,所以也许还有比这更有效的代码。