星辰皇 发表于 2022-11-14 08:25:10

求助各位大神

求助各位大神:请问下边这两个代码有什么不同?两个不是同样是给变量赋值吗,为什么上边当list1变的时候list3也跟着变,而下边的当old变而new却不跟着变?
list1 =
list3 = list1
list3

list1.sort()
list1

list3



old =
new = old
old =
print(new)

三个晾衣架 发表于 2022-11-14 08:36:29

标签old原来指向的是这个地址,后来把old赋值给new,那么new指向的也是这个地址,所以现在指向的标签有两个,就是old和new;之后,把赋值给old,由于的的地址和的地址不同,所以标签old就改变了指向,改为指向这个地址,所以此时指向的标签就只有new了。所以把赋值给old,只是把标签old指向了一个新的地址(),并没有改变这个列表,所以原来指向这个列表的new也就没有变化。

jackz007 发表于 2022-11-14 09:10:24

本帖最后由 jackz007 于 2022-11-14 09:15 编辑

ist1 =    # list1 指向列表对象
list3 = list1               # list3 也指向列表对象 ,【关键】:list1、list3 指向的是同一个列表对象。
list3

list1.sort()                # 通过 list1 对列表对象 排序
list1                     # list1 是经过排序的

list3                     # 由于 list1、list3 指向的是同一个列表对象,所以,我们看到的 list3 也是经过排序的

      list1 和 list3 指向了内存中的同一个列表对象,而不是各自对应一个自己的对象,是理解这道题的关键。
old =          # old 指向列表对象
new = old                   # new 也指向列表对象
old =                    # old 指向了另一个列表对象
print(new)                  # new 依然指向列表对象

星辰皇 发表于 2022-11-14 12:20:02

三个晾衣架 发表于 2022-11-14 08:36
标签old原来指向的是这个地址,后来把old赋值给new,那么new指向的也是这个地址,所 ...

懂了懂了,谢谢大神

星辰皇 发表于 2022-11-14 12:21:01

jackz007 发表于 2022-11-14 09:10
list1 和 list3 指向了内存中的同一个列表对象,而不是各自对应一个自己的对象,是理解这道题的 ...

谢谢大神~
页: [1]
查看完整版本: 求助各位大神