|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我想问一下,Python的第12讲里面的测试题第0题,好像有错误,按照第11讲里这个题应该结果是变成6的,但是还是1,2,3,4,5,所以我又试了一下,发现对于sort(),如果是new=old的话就会随着变化,而分片的方法不会,但是如果是直接重新给了old一个值,new并不会随着变化。小白一个,所以描述的不清楚,附上代码希望各位大牛可以给予解答
- >>> list1 = [1,3,6,9]
- >>> list2 = list1[:]
- >>> list3 = list1
- >>> list2
- [1, 3, 6, 9]
- >>> list3
- [1, 3, 6, 9]
- >>> list1 = [2,4]
- >>> list2
- [1, 3, 6, 9]
- >>> list3
- [1, 3, 6, 9]
- >>> list1 = [1,9,6,7]
- >>> list2 = list1[:]
- >>> list3 = list1
- >>> list2
- [1, 9, 6, 7]
- >>> list3
- [1, 9, 6, 7]
- >>> list1.sort()
- >>> list1
- [1, 6, 7, 9]
- >>> list2
- [1, 9, 6, 7]
- >>> list3
- [1, 6, 7, 9]
复制代码
python中变量名只是标签而已,可以多个标签指向同一块内存
new=old
意味着new和old这两个标签指向了同一块内存
所以你对new和old指向的数据进行改动,比如列表的pop,sort,reverse等操作都会对两者同时产生作用,因为他们修改了内存中的数据
而你将old重新赋值,意味着old标签指向另外一块内存,从此old和new再无瓜葛
|
|