鱼C论坛

 找回密码
 立即注册
查看: 2279|回复: 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)

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

复制代码



你可以这样赋值

  1. a=[[1,2,3],[4,5,6]]
  2. b=eval(str(a))
  3. print(a is b)
  4. print(a,'\n')
  5. print(b,'\n')
  6. b[0][1]=999
  7. print(b)
  8. print(a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是看了教学视频,我复现的,他确实不改变,他是b[0,1]=999,这条代码我运行报错,我改为b[0][1]=999应该不影响吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

数据结构不一样,他是数组,你这个是列表,所以会报错

  1. import numpy as np
  2. a=np.array([[1,2,3],[4,5,6]])

  3. b = a.copy()

  4. b[0,1] = 999

  5. print(a)

  6. print(b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 04:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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