|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- >>> list1 = [1, 3, 2, 9, 7, 8]
- >>> list2 = list1
- >>> list1.sort()
- >>> list1
- [1, 2, 3, 7, 8, 9]
- >>> list2
- [1, 2, 3, 7, 8, 9][code]
- >>> old = [1,2,3,4,5]
- >>> new = old
- >>> old =[6]
- >>> print(new)
- [1, 2, 3, 4, 5]
复制代码 [/code]
以上两份代码,为什么将 list1 赋值给 list2 之后,对 list1 排序,list2 也进行了排序;而第二份代码,将 old 赋值给 new 之后,对 old 重新赋值,new 却不变?
你把变量名理解为存在栈区,赋值结果理解为存在堆区。
1、list1由栈区指向堆区[1,3,2,9,7,8],
list2也由栈区指向堆区[1,3,2,9,7,8]。
所以两者实际上指向的是同一个堆区的内存地址。
2、old由栈区指向堆区[1,2,3,4,5],new也由栈区指向堆区[1,2,3,4,5]。
old重新改了指向,由栈区指向堆区[6].
new的指向仍旧是堆区的[1,2,3,4,5]。
|
|