鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 3

矩阵的copy赋值

[复制链接]
发表于 2021-6-30 10:18:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 波大大12138 于 2021-6-30 10:25 编辑

copy赋值,不是只赋值数据值,赋值完之后,两个变量完全互不影响的吗?也就是说修改b 不会影响a,这里运行结果a,b都改变了?,等号赋值才是这样的啊

a=[[1,2,3],[4,5,6]]
b=a.copy()
print(a is b)
print(a,'\n')
print(b,'\n')
b[0][1]=999
print(b)
print(a)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-30 10:22:30 | 显示全部楼层
列表嵌套的话,虽然最外层列表不一样,但是列表内元素指向的是同一id
a=[[1,2,3],[4,5,6]]
b=a.copy()
print(a is b)
print(a[0] is b[0])
print(a[1] is b[1])


你可以这样赋值
a=[[1,2,3],[4,5,6]]
b=eval(str(a))
print(a is b)
print(a,'\n')
print(b,'\n')
b[0][1]=999
print(b)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-30 10:29:43 | 显示全部楼层
逃兵 发表于 2021-6-30 10:22
列表嵌套的话,虽然最外层列表不一样,但是列表内元素指向的是同一id

我是看了教学视频,我复现的,他确实不改变,他是b[0,1]=999,这条代码我运行报错,我改为b[0][1]=999应该不影响吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-30 11:13:10 | 显示全部楼层
波大大12138 发表于 2021-6-30 10:29
我是看了教学视频,我复现的,他确实不改变,他是b[0,1]=999,这条代码我运行报错,我改为b[0][1]=999应该 ...

数据结构不一样,他是数组,你这个是列表,所以会报错
import numpy as np 
a=np.array([[1,2,3],[4,5,6]])

b = a.copy()

b[0,1] = 999

print(a)

print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 18:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表