我在解决矩阵旋转90度的问题。在这个问题中,我使用了一个k
列表,其中填充了用户传递的精确度数的0。你知道吗
我尝试了以下代码:
def rotate(m):
k=[]
f=[]
print(m)
for i in range(0,len(m)):
f.append(0)
for i in range(0,len(m)):
k.append(f)
print(k)
for i in range(0,len(m)):
for j in range(0,len(m)):
print("REPLACING POSITION:",i,j )
t=m[i][j]
k[j][len(m)-i-1]=t
return (k)
print(rotate([[1,2],[3,4]]))
我期望输出:
[[1, 2], [3, 4]]
[[0, 0], [0, 0]]
REPLACING POSITION: 0 0
REPLACING POSITION: 0 1
REPLACING POSITION: 1 0
REPLACING POSITION: 1 1
[[3, 1], [4, 2]]
我得到输出:
[[1, 2], [3, 4]]
[[0, 0], [0, 0]]
REPLACING POSITION: 0 0
REPLACING POSITION: 0 1
REPLACING POSITION: 1 0
REPLACING POSITION: 1 1
[[4, 2], [4, 2]]
为什么最后一排不停地重复?请帮忙。你知道吗
第一个循环生成列表
f
。 下一个for循环生成列表k
,它意味着包含列表f
的len(m)
副本。问题是f
(大多数列表)只是指针。所以listk
实际上是指向同一listf
的指针列表。你知道吗因此,对k中f的元素所做的所有修改都是对同一个列表进行的。你知道吗
一种解决方案是在使用slice操作符生成list
k
时使用listf
的副本:使用f.copy()获取列表的深度副本。你知道吗
相关问题 更多 >
编程相关推荐