python - 无法理解为什么此代码会产生此输出
问题描述
a=[-5,29,45,[67,54]]
b=list(a)
a[3][0]=88
a[1]=34
print("b = ",b)
print("a = ",a)
当我运行这个 python 代码时,我得到的输出为b = [-5, 29, 45, [88, 54]]
and a = [-5,34,45,[88,54]]
。这个输出是怎么来的,我的意思是如何a[3][0]=88
改变,b
而a[1]=34
不是?
解决方案
答案很简单,你已经从 list(a) 创建了一个列表,这样就创建了一个全新的数组。但是列表中的列表对于 a 和 b 是相同的。
您可以通过打印 id(a)、id(b)、id(a[-1]) 和 id(b[-1) 来检查它
a=[-5,29,45,[67,54]]
b=list(a)
a[3][0]=88
a[1]=34
print("b = ",b)
print(“a = “,a)
print(“address of a”,id(a))
print(“address of b”,id(b))
print(“address of a[-1]”, id(a[-1])
print(“address of b[-1]”, id(b[-1])
推荐阅读
- html - 使用 html 音频制作播放暂停开关
- python - 重启后 pip 包丢失包数据
- reactjs - 在 Ant Design 中为 Checkbox 设置动态样式
- reactjs - 错误:[ThemeProvider] 请将您的主题道具设为普通对象
- javascript - 我如何在 react redux 中访问另一个 reducer 的状态。reducer 和 store 之间的状态流
- java - 静态方法中的 Application.properties
- python - 如果玩家在 x 秒内没有移动,请在 pygame 中执行某些操作
- html - 按钮上的锚标记之间的文本未显示
- ruby-on-rails - 在rails中的redirect_to内redirect_to
- dom - Node.CloneNode() 不是一个函数 -dom-to-image.js