L0V3J 发表于 2017-2-15 21:05:58

python小问题

>>> a

>>> a + b

>>> c= a + b
>>> c

>>> b.sort()
>>> c

>>> b

python里的组名称只是一个指向其标签,那么这里怎么解释呢?

L0V3J 发表于 2017-2-15 21:06:42

希望大佬能够解释下,谢谢{:5_91:}

lubcat 发表于 2017-2-15 22:16:36

>>> a----->
>>> a + b--->
>>> c= a + b
>>> c----->
>>> b.sort()-->
>>> c----------->
>>> b----------->

哪个指向不明确?

L0V3J 发表于 2017-2-15 22:51:33

lubcat 发表于 2017-2-15 22:16
>>> a----->
>>> a + b--->
>>> c= a + b


感觉 c 的指向不是很理解
我的理解是 c - - - - >
因为 b 已经指向了

冬雪雪冬 发表于 2017-2-16 11:08:51

凡是赋值操作都会在新的地址产生新的值,已经与原来的变量无关了

lubcat 发表于 2017-2-16 19:14:32

L0V3J 发表于 2017-2-15 22:51
感觉 c 的指向不是很理解
我的理解是 c - - - - >
因为 b 已经指向了

你可以试试b.sort()之后
再把a+b赋值给c
这时的c应该包含排序后的b了。

L0V3J 发表于 2017-2-17 16:50:11

冬雪雪冬 发表于 2017-2-16 11:08
凡是赋值操作都会在新的地址产生新的值,已经与原来的变量无关了

>>> b =
>>> c = b
>>> b.sort()
>>> b

>>> c

但是这样又是与原来的变量同步啊,视频中讲的这个变量只是指向它的啊

L0V3J 发表于 2017-2-17 16:53:17

lubcat 发表于 2017-2-16 19:14
你可以试试b.sort()之后
再把a+b赋值给c
这时的c应该包含排序后的b了。

>>> b =
>>> a =
>>>
>>> b.sort()
>>> c = a + b
>>> c

这样是排序后的b,但是是为什么

冬雪雪冬 发表于 2017-2-17 17:00:03

L0V3J 发表于 2017-2-17 16:50
>>> b =
>>> c = b
>>> b.sort()


>>> b = 赋值产生一个新地址,地址1
>>> c = 赋值产生一个新地址,地址2
>>> c = b 注意这里,赋值后c不在原来的地址2了,而是地址1了。
>>> b.sort() 对地址1的数值排序
>>> b

>>> c 当然c也是排序后的值了。

lubcat 发表于 2017-2-17 17:18:26

L0V3J 发表于 2017-2-17 16:53
>>> b =
>>> a =
>>>


我认为,这说明sort方法改变了原来的列表,返回的是排序后的新列表。

L0V3J 发表于 2017-2-17 17:47:57

冬雪雪冬 发表于 2017-2-17 17:00
>>> b = 赋值产生一个新地址,地址1
>>> c = 赋值产生一个新地址,地址2
>> ...

>>> ab储存在地址0,a储存在地址1

>>> a + b 在地址2

>>> c= a + bc在地址2
>>> cc就不因为b地址1的改变而影响

>>> b.sort()
>>> c

>>> b

这样理解对的吧

L0V3J 发表于 2017-2-17 17:50:18

lubcat 发表于 2017-2-17 17:18
我认为,这说明sort方法改变了原来的列表,返回的是排序后的新列表。

哦哦,谢谢啦
页: [1]
查看完整版本: python小问题