[课后作业] 第012讲:列表:一个打了激素的数组3第0题
大家好,菜鸡一枚想问个问题>>> old =
>>> new = old
>>> old =
>>> print(new)
为什么这边old= 不改变new的值,而old.sort()的话会改变 new的值呢?
因为old是直接把标签撕了下来,贴到了上面,
而sort是列表的内置方法,并不会改变。 用通俗的说法,python中先有“值”,再有“变量”,变量只是“值”的“标签”。你的程序逻辑是,先创建列表,然后给这个列表贴了标签名old,再然后new同样是贴到了此列表上。再接下来,你创建列表 ,并给其贴了标签old。new完全没有发生过任何改变,你就没有操作过列表。
但是如果你不创建新列表,old和new都贴在列表上。之后使用old.sort(),那就是对进行了排序,访问new就会得到改变后的结果。 old = #第一次赋值
new = old #将old 赋值给new 这行代码就等价与new =
old = #这里你的old重新赋值,就会覆盖原本的old 变量,但是new 来源还是
print(new)
你可以这样做
old =
new = old #他们的根本来源都是
new.append(6)
print(old)
同理:
old =
new = old #他们的根本来源都是
old.append(6)
print(new)
python中 变量都有id (通俗说就是来源,id(new)可以查询new的id)
id相同 他们就相当于捆绑在一起了 其中一个改变 另一个也会随之改变就像 量子纠缠
而你后面是 old = 是重新给old 赋值 python 就会重新赋予他一个id 就和先前的id 不同 new id 还是原来的old = 时候的id
python中变量名是标签,你将变量名重新赋值,意味着将这个标签从原来的地址上撕下来贴到新的地址上去了
可以看看我写的帖子
python细节之2、变量名与标签 变量的赋值与修改
啊,谢谢大家! {:10_254:} 懂了 yester 发表于 2020-4-2 02:59
啊,谢谢大家!懂了
那就给个最佳吧哈哈你看着给谁, 这样也有助于你下次提问别人回答的积极性哈哈
页:
[1]