python - 使用 python 进行数组旋转(顺时针 90 度)- 理解列表副本时遇到问题
问题描述
嗨,我是 python 新手,需要帮助制作列表副本!
def rotate(lst):
a=lst[:]
#a=lst[:] / =lst.copy() / =[x for x in lst] e.t.c does not work but a=[[0,0,0],[0,0,0],[0,0,0]] works # # # how?
for i in range(len(lst)):
for j in range(len(lst)):
a[j][i]=lst[len(lst)-i-1][j]
return a
lst=[[1,2,3],[4,5,6],[7,8,9]]
print(rotate(lst))
print(lst)
预期答案(当 a=[[0,0,0],[0,0,0],[0,0,0]] 时获得):
[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
使用 a=lst[:] | 得到的答案 一个 =lst.copy() | a =[x for x in lst]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[7, 8, 7], [8, 5, 8], [9, 6, 7]]
[[7, 8, 7], [8, 5, 8], [9, 6, 7]]
a=[[0]*len(lst)]*len(lst) 也给出了错误的答案,即使它本质上意味着 a=[[0,0,0],[0,0,0],[0,0 ,0]])
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[9, 6, 3], [9, 6, 3], [9, 6, 3]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
为什么会这样?为什么深拷贝在这种情况下不起作用?
解决方案
推荐阅读
- java - 软键盘不出现
- python - Pandas lambda 函数无法识别 NaN
- sql - 在 SQL Server 的不同数据库和表中查找用户信息
- numpy - Numpy/Scipy:用相同的设计矩阵求解几个最小二乘
- node.js - 在nodejs中使用区域语言从客户端获取数据
- c# - 让 Teams Calls 返回未在我们商店注册的应用程序
- javascript - 发送到客户端 axios next.js 后无法设置标头
- reactjs - 使用包含多个 CN 或域名的 SSL 托管 asp.net core + ReactJS Web 应用程序导致无效的颁发者错误
- javascript - 将动态字符串传递给对象
- python - 如何使用经过训练的 pyod.LOCI 和机器学习模型预测给定值是否异常?