我试图回答这个视频中的面试问题,作为 Python 编程练习,我决定使用 Nick 解释的第一种方法,但由于某种原因,我的函数总是返回一个与输入相同的矩阵,我真的很难找到错误
我写的函数是:
def swap(inp):
for i in range(len(inp)-1):
for j in range(len(inp[i])-1):
temp = inp[i][j]
inp[i][j] = inp[j][i]
inp[j][i] = temp
return inp
我不打算观看整个视频,但我点击了四周,看到“第 1 步”c++ 代码看起来与您的非常相似。我假设您正在尝试复制它。
首先,不确定你想要什么 -1。如果这样做,您将保留最后一行和最后一列。其次,您从 j=0 开始内部循环,但在视频中它从 j=i 开始。
您的功能经过这些修改:
def swap(inp):
for i in range(len(inp)):
for j in range(i, len(inp[i])):
temp = inp[i][j]
inp[i][j] = inp[j][i]
inp[j][i] = temp
return inp
如果你只给 一个参数range
,它假定从 0 开始。如果你给它两个参数,它是从第一个参数到第二个参数,在这种情况下从i
to len(inp[i])
。
编辑:顺便说一下,这是一个使用 numpy 函数实现相同结果的解决方案。乍一看,我认为转置输入 ( inp.T
) 对应于步骤 1,并且np.flip(..., 1)
是水平翻转。
def swap_numpy_style(inp):
return np.flip(inp.T, 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句