关于第十二讲的第0题
0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。>>> old =
>>> new = old
>>> old =
>>> print(new)
复制代码
然后自己试了下:
new=
这是不是与上节课的相矛盾:
list1 =
list3 = list1
list3
list1.sort()
>>> list1
>>> list3
没有啊,没有矛盾,你这个是在讲old1赋值给new后又另定义的old2,old2与new并没有关系,所以会输出old1,你看下第10讲的动动手的第1 题,那道题就能解决你的疑问
你只是重新赋值了old,new在old重新赋值之后还是没变化,还是最先赋值的 old =
new =
old =
print(new)#new =
你可以在每一步下面都print(new,old),看一下他们的值就明白了 old = # 变量 old 指向列表对象
new = old # 变量 new 和 old 一同指向列表对象
old = # 变量 old 指向另外的一个列表对象 ,old 和 new 就此分道扬镳。
list1 = # 变量 list1 指向列表对象
list3 = list1 # 变量 list3 和 list1 一同指向列表对象
list1 . sort() # 列表对象 内部元素重新排序
# list1 和 list3 依然指向排过序的列表
前面的例子 old 和 new 在指向同一个列表对象后,old 又通过赋值指向新的列表对象,而后面的例子 list1 和 list3 在指向同一个列表对象后,并没有重新赋值操作,所以,他们始终指向同一个对象,只不过这个对象被重新排了序而已。
old = 是被重新赋值了,而new没有被重新赋值,所以new =
list1.sort()只是重新排序了,不是赋值了。所以list3 =
以上两种情况不同
页:
[1]