鱼C论坛

 找回密码
 立即注册
查看: 3040|回复: 6

关于赋值与加法运算符

[复制链接]
发表于 2015-4-13 17:25:19 | 显示全部楼层 |阅读模式

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

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

x
最近在学习python的时候,感觉赋值就是贴标签,例如下面语句:
list1 = [1,2,8,5,6]
list2 = list1[:]
list3 = list1
list1.sort()
print(list2,list3)

输出应该是
[1,2,8,5,6]  [1,2,5,6,8]

如果换成下面语句
list1 = [1,2,8,5,6]
list2 = list1[:]
list3 = list1 + [4]
list1.sort()
print(list2,list3)


输出就是
[1,2,8,5,6]  [1,2,8,5,6,4]

求解答,难道是因为加法操作copy了一份list1?多谢!

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-13 20:46:51 | 显示全部楼层
>>> list1 = [1,2,8,5,6]
>>> list2 = list1[:]
>>> list3 = list1 + [4]
>>> for i in ['list1', 'list2', 'list3']:
        print (id(i))

        
61984736
64469472
64470272
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-13 21:11:48 | 显示全部楼层
大神就是大神,解答都这么深奥,我解释一下楼上。
楼上想说3个变量是在不同的内存里,加法操作没有复制list1,只是将加后的列表赋值给了list3,原列表还在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-13 21:45:38 | 显示全部楼层
list3 = list1 + [4] 你可以对这个操作这么理解,是又开辟了一个指针为list3而区域内的数据是list1+[4]
而list3=list1只是创建了一个新的指针,而他们对应的数据依然是list1的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-13 22:43:29 | 显示全部楼层
为伊无悔 发表于 2015-4-13 21:11
大神就是大神,解答都这么深奥,我解释一下楼上。
楼上想说3个变量是在不同的内存里,加法操作没有复制lis ...

三个变量的ID值不一样,就想表达这个意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-14 09:26:59 | 显示全部楼层
多谢楼上的各位阿,明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-15 05:51:32 | 显示全部楼层
顶!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 07:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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