鱼C论坛

 找回密码
 立即注册
查看: 5091|回复: 11

[已解决]python小问题

[复制链接]
发表于 2017-2-15 21:05:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> a
[5, 6, 7, 8, 9]
>>> a + b
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> c= a + b
>>> c
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b.sort()
>>> c
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b
[0, 1, 2, 3, 4]
python里的组名称只是一个指向其标签,那么这里怎么解释呢?
最佳答案
2017-2-17 17:00:03
L0V3J 发表于 2017-2-17 16:50
>>> b = [7,6,5,4,3,2,1]
>>> c = b
>>> b.sort()

>>> b = [7,6,5,4,3,2,1] 赋值产生一个新地址,地址1
>>> c = [1, 1, 2] 赋值产生一个新地址,地址2
>>> c = b 注意这里,赋值后c不在原来的地址2了,而是地址1了。
>>> b.sort() 对地址1的数值排序
>>> b
[1, 2, 3, 4, 5, 6, 7]
>>> c 当然c也是排序后的值了。
[1, 2, 3, 4, 5, 6, 7]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-2-15 21:06:42 | 显示全部楼层
希望大佬能够解释下,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-15 22:16:36 | 显示全部楼层
>>> a----->[5, 6, 7, 8, 9]
>>> a + b--->[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> c= a + b
>>> c----->[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b.sort()-->[0,1,2,3,4]
>>> c----------->[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b----------->[0, 1, 2, 3, 4]

哪个指向不明确?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-15 22:51:33 | 显示全部楼层
lubcat 发表于 2017-2-15 22:16
>>> a----->[5, 6, 7, 8, 9]
>>> a + b--->[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> c= a + b

感觉 c 的指向不是很理解
我的理解是 c - - - - >[5,6,7,8,9,0,1,2,3,4]
因为 b 已经指向了 [0,1,2,3,4]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-16 11:08:51 | 显示全部楼层
凡是赋值操作都会在新的地址产生新的值,已经与原来的变量无关了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-16 19:14:32 | 显示全部楼层
L0V3J 发表于 2017-2-15 22:51
感觉 c 的指向不是很理解
我的理解是 c - - - - >[5,6,7,8,9,0,1,2,3,4]
因为 b 已经指向了 [0,1,2,3,4 ...

你可以试试b.sort()之后
再把a+b赋值给c
这时的c应该包含排序后的b了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 16:50:11 | 显示全部楼层
冬雪雪冬 发表于 2017-2-16 11:08
凡是赋值操作都会在新的地址产生新的值,已经与原来的变量无关了

>>> b = [7,6,5,4,3,2,1]
>>> c = b
>>> b.sort()
>>> b
[1, 2, 3, 4, 5, 6, 7]
>>> c
[1, 2, 3, 4, 5, 6, 7]
但是这样又是与原来的变量同步啊,视频中讲的这个变量只是指向它的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

>>> b = [7,6,5,4,3,2,1]
>>> a = [9,8,7]
>>>
>>> b.sort()
>>> c = a + b
>>> c
[9, 8, 7, 1, 2, 3, 4, 5, 6, 7]
这样是排序后的b,但是是为什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 17:00:03 | 显示全部楼层    本楼为最佳答案   
L0V3J 发表于 2017-2-17 16:50
>>> b = [7,6,5,4,3,2,1]
>>> c = b
>>> b.sort()

>>> b = [7,6,5,4,3,2,1] 赋值产生一个新地址,地址1
>>> c = [1, 1, 2] 赋值产生一个新地址,地址2
>>> c = b 注意这里,赋值后c不在原来的地址2了,而是地址1了。
>>> b.sort() 对地址1的数值排序
>>> b
[1, 2, 3, 4, 5, 6, 7]
>>> c 当然c也是排序后的值了。
[1, 2, 3, 4, 5, 6, 7]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 17:18:26 | 显示全部楼层
L0V3J 发表于 2017-2-17 16:53
>>> b = [7,6,5,4,3,2,1]
>>> a = [9,8,7]
>>>

我认为,这说明sort方法改变了原来的列表,返回的是排序后的新列表。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 17:47:57 | 显示全部楼层
冬雪雪冬 发表于 2017-2-17 17:00
>>> b = [7,6,5,4,3,2,1] 赋值产生一个新地址,地址1
>>> c = [1, 1, 2] 赋值产生一个新地址,地址2
>> ...

>>> a  b储存在地址0,a储存在地址1
[5, 6, 7, 8, 9]
>>> a + b 在地址2
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> c= a + b  c在地址2
>>> c  c就不因为b地址1的改变而影响
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b.sort()
>>> c
[5, 6, 7, 8, 9, 4, 3, 2, 1, 0]
>>> b
[0, 1, 2, 3, 4]
这样理解对的吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-2-17 17:50:18 | 显示全部楼层
lubcat 发表于 2017-2-17 17:18
我认为,这说明sort方法改变了原来的列表,返回的是排序后的新列表。

哦哦,谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-16 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表