海鸟跟鱼 发表于 2020-9-30 10:27:50

小白求助

本帖最后由 海鸟跟鱼 于 2020-9-30 10:29 编辑

[课后作业] 第012讲:列表:一个打了激素的数组3 课后测试题的答案和11讲最后一题有点混淆,一直搞不懂,求助各位大佬,应该怎么理解~

第12讲>>> old =
>>> new = old
>>> old =
>>> print('new =', new)
>>> print('old =', old)
new =
old = 打印old为6,很好理解。。为啥new的值没有变化? 用"="赋值不是相当于给列表old增加了名为 new 的标签么??

第11讲最后一题
>>> list1 =
>>> list2 = list1[:]
>>> list2

>>> list3 = list1
>>> list3

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

>>> list2

>>> list3
从这题的答案来看,list3=list1之后,list3的值会根着list1的变化而变化,但是上面的new = old 之后,old变化之后new没有变化~~

昨非 发表于 2020-9-30 10:37:38

我的理解是,变量用的是两个存储空间,而列表是指向同一个位置
list1 =
list2 = list1
list1 = 1
print(list1)
print(list2)
   
a = '123'
b = a
a = '113'
print(a,b)

sbx 发表于 2020-9-30 10:56:58

我来看看!

疾风怪盗 发表于 2020-9-30 11:01:32

你这个问题,就和这个类似
https://fishc.com.cn/thread-181252-1-1.html
版主才回答过

sunrise085 发表于 2020-9-30 11:15:19

第一个问题:python中变量名是标签,你将变量名重新赋值,意味着将这个标签从原来的地址上撕下来贴到新的地址上去了

第二个问题是可变类型变量修改的问题,列表拷贝就是一个新对象了,直接贴标签,是同一个对象有两个标签
可以看看我写的帖子,里面有介绍这两个问题
python细节之2、变量名与标签 变量的赋值与修改

海鸟跟鱼 发表于 2020-9-30 13:24:13

昨非 发表于 2020-9-30 10:37
我的理解是,变量用的是两个存储空间,而列表是指向同一个位置

谢谢大佬,按照你说的方式去尝试理解,还是没能理解出来{:5_99:}目前接触到的东西有点少,理解上还是有点问题把,还是得谢谢大佬{:5_109:}
页: [1]
查看完整版本: 小白求助