supermanmimi 发表于 2021-8-6 14:47:37

关于列表的问题

>>> old =
>>> new = old
>>> old =
>>> print(new)

各位大佬,为什么这个最终会打印出呀?为什么不是呢?

求解!萌新在这谢过各位大佬了~

xruiy 发表于 2021-8-6 14:50:30

第二步定义new为

xruiy 发表于 2021-8-6 14:51:43

第三行代码重新定义了old却没有定义new

xruiy 发表于 2021-8-6 14:52:37

old=
old=
new=old
print(new)

柿子饼同学 发表于 2021-8-6 14:52:46

这里即相当于new 赋值为old
但是new 它不是oid , 只能说是拷贝
当new变化时 , old不会影响 , 因为id 不一样了>>> old =
>>> new = old
>>> id(old)
2004529505216
>>> id(new)
2004529505216
>>> new =
>>> id(new)
2004562592960
>>>

逃兵 发表于 2021-8-6 15:00:04

通俗易懂的讲一下
python的变量就像是个标签贴在数据上

有个人叫old,管理大仓库
old =

某一天,领导把儿子new下派下来跟你管理同一个大仓库,此时你们都是大仓库的管理员

new = old

又过了一段时间,你因为左脚先进门而被处罚,调到了小仓库当管理员

old =

从此以后,说到new大家都知道他是大仓库管理员,而说到old,大家就只知道他是小仓库管理员了

supermanmimi 发表于 2021-8-6 15:02:47

逃兵 发表于 2021-8-6 15:00
通俗易懂的讲一下
python的变量就像是个标签贴在数据上



>>> list1 =
>>> list2 = list1[:]
>>> list2

>>> list3 = list1
>>> list3

>>> list1.sort()
>>> list1

>>> list3


谢谢大佬的解答,那为什么这样写,list3又会跟着list1一起改变呢?

逃兵 发表于 2021-8-6 15:09:59

supermanmimi 发表于 2021-8-6 15:02
>>> list1 =
>>> list2 = list1[:]
>>> list2


list.sort()操作是对列表本身去做的改变
list1和list3实际上都指向这个数据
list1和list3都会随着它而变

打个比方
list1是的管理员
list1 =
list3是被下派下来跟list1共同管理
list3 = list1
此时list1对仓库做了一些更改
list1.sort()
由于这个仓库是list1和list3共同管理的,所以改变了list1相当于改变了list3

supermanmimi 发表于 2021-8-6 17:06:06

逃兵 发表于 2021-8-6 15:09
list.sort()操作是对列表本身去做的改变
list1和list3实际上都指向这个数据
list1和list3都会随着它 ...

谢谢大佬!通俗易懂,我悟了,感谢。

逃兵 发表于 2021-8-6 17:09:28

supermanmimi 发表于 2021-8-6 17:06
谢谢大佬!通俗易懂,我悟了,感谢。

不用客气,弄清楚了就好{:10_297:}
页: [1]
查看完整版本: 关于列表的问题