zk1987 发表于 2020-6-30 15:35:15

为什么和下面b 跟随a 变化 上面的却不会呢

>>> a=
>>> b=a
>>> a=
>>> b


为什么和下面b跟随a 变化   上面的却不会呢
>>> a=
>>> b=a
>>> a.sort()
>>> b

Twilight6 发表于 2020-6-30 15:45:06

本帖最后由 Twilight6 于 2020-6-30 15:48 编辑



下面说的别名 就像人的外号,你这样理解可能更好理解哈~~

>>> a=
>>> b=a
>>> a=
>>> b


这里 a = 实际上是给列表 取了一个别名 a ,来代表这个列表

而你后面重新令b= a实际上可以看成b= ,此时你还是为列表 取了一个别名 b

而你后来重新将a重新赋值也就是 a = 那么就将原本列表 的 a 别名 给了 列表 导致 原本列表没有了 的别名

而 b 还是属于列表 的别名 所以 a 的重新赋值 并不会影响 b

Python 中列表的绝大多数方法是在列表本身上进行改变的

比如 sort()、append()、extend()、remove()、reverse()等,是在列表本身进行改变噢!

所以我们来看看代码:
>>> a=
>>> b=a
>>> a.sort()
>>> b


同上这里的 列表 被取了俩个别名 a 、b

而且源头都是指向列表 的 , 所以只要其中一个的元素发生改变,那么另外一个也会发生改变,因为 a 、 b 指的都是同一个列表

所以使用sort 排序,会在整个列表上进行改变,所以与这个列表有关的也全部随之改变



liuzhengyuan 发表于 2020-6-30 15:47:34

因为第一种方法的含义是新建一个同名列表 a,此时 的 a 已经不是之前的了

第二种方法时真真的“更改列表”,此时 的 a 还是之前的 a,所以 b 也会更着改变

yhhpf 发表于 2020-6-30 15:49:41

Twilight6 发表于 2020-6-30 15:45
下面说的别名 就像人的外号,你这样理解可能更好理解哈~~




我感觉get到了一个‘商机’
这个问题出现3次了,固定个回答,每次copy下,哈哈哈{:10_256:}

Twilight6 发表于 2020-6-30 15:50:59

yhhpf 发表于 2020-6-30 15:49
我感觉get到了一个‘商机’
这个问题出现3次了,固定个回答,每次copy下,哈哈哈



我经常这样做....

{:10_297:}只要让鱼油听得懂就行

临时号 发表于 2020-8-1 19:21:45

yhhpf 发表于 2020-6-30 15:49
我感觉get到了一个‘商机’
这个问题出现3次了,固定个回答,每次copy下,哈哈哈

你才知道啊!
页: [1]
查看完整版本: 为什么和下面b 跟随a 变化 上面的却不会呢