|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
这道题为什么是6. 不是说new 会随old改变而改变吗 old 变成6,为什么new 还是原来的[1,2,3,4,5]
本帖最后由 Twilight6 于 2020-6-3 20:28 编辑
在这里 old 和 new 都是 列表 [1,2,3,4,5] 的别名,old 和 new 都指向的是 [1,2,3,4,5] 列表
而 old = [6] 是直接赋值,而不是在列表[1,2,3,4,5]上进行改变就是将 old 重新改变 id 指向了新的列表 [6] 所以 new 不会改变,因为 列表本身 [1,2,3,4,5] 没发生改变
你可以通过 Python 的内置函数 id() 来查询列表的地址是否相同
- old = [1,2,3,4,5]
- new = old
- print('old的id地址:',id(old),'new的id地址:',id(new))
复制代码
你会发现这样 他们的 id 地址相同
而old = [6] 之后呢?
- old = [1,2,3,4,5]
- new = old
- print('old的id地址:',id(old),'new的id地址:',id(new))
- old = [6]
- print('old的id地址:',id(old),'new的id地址:',id(new))
复制代码
你会发现地址不同了,也就是赋值会直接改变地址,而不是在原来列表上进行改变
|
|