提问人:Saurabh Damle 提问时间:10/4/2022 最后编辑:wovanoSaurabh Damle 更新时间:10/4/2022 访问量:168
如何在 Python 中将矩阵作为参数传递而不更改其原始值 [duplicate]
How to pass a matrix as an argument without changing its original values in Python [duplicate]
问:
我正在尝试将矩阵(列表列表)作为参数传递给函数。我想保持原始矩阵值不变。如何在 python 中实现它?我试图在新的变量温度中复制矩阵,但它仍然不起作用。
ideal = [[5,1,2,3,4],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]
print(ideal)
for i in range(1):
temp = ideal
print(rotate_col_down(temp,i))
print(ideal)
输出:
[[5, 1, 2, 3, 4], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 23, 23, 24, 25]] #ideal
[[21, 1, 2, 3, 4], [5, 7, 8, 9, 10], [6, 12, 13, 14, 15], [11, 17, 18, 19, 20], [16, 23, 23, 24, 25]]
[[21, 1, 2, 3, 4], [5, 7, 8, 9, 10], [6, 12, 13, 14, 15], [11, 17, 18, 19, 20], [16, 23, 23, 24, 25]] # changed ideal
这是我尝试实现的功能
def rotate_col_down(state, j):
temp = state[ROWS-1][j]
for i in range(ROWS-1,0,-1):
state[i][j]= state[i-1][j]
state[0][j] = temp
return(state)
答:
2赞
LinFelix
10/4/2022
#1
你遇到了这样一个事实,即 python 主要是通过引用而不是值传递(将这篇文章与答案进行比较)。
您可以在代码中使用 or (compare how-to-deep-copy-a-list.copy()
copy.deepcopy()
)
所以一个解决方案是
import copy
ideal = [[5,1,2,3,4],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]
print(ideal)
for i in range(1):
print(rotate_col_down(copy.deepcopy(ideal),i))
print(ideal)
评论
2赞
wovano
10/4/2022
很好的答案,但如果之前已经回答过问题,最好将问题标记为重复,而不是提供新答案。
上一个:按值复制数组
评论