鱼C论坛

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

[已解决]第12讲课后列表疑问

[复制链接]
发表于 2019-6-14 13:12:57 | 显示全部楼层 |阅读模式

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

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

x
list1=[1,3,9,5,2,4]
print(list1)
list2=list1[:]
print(list2)
list3=list1
print(list3)
list1.sort()
print(list1)
print(list2)
print(list3)

list1= [1, 2, 3, 4, 5]
list2 = list1
list1 = [6]
print(list2)

[1, 3, 9, 5, 2, 4]
[1, 3, 9, 5, 2, 4]
[1, 3, 9, 5, 2, 4]
[1, 2, 3, 4, 5, 9]
[1, 3, 9, 5, 2, 4]
[1, 2, 3, 4, 5, 9]
[1, 2, 3, 4, 5]

为什么是[1,2,3,4,5]而不是[6]呢?
最佳答案
2019-6-14 13:18:43
因为改变的是list1 而print list2,list1和list2是两个不同的变量,list2不会因为list1的改变而改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-14 13:18:43 | 显示全部楼层    本楼为最佳答案   
因为改变的是list1 而print list2,list1和list2是两个不同的变量,list2不会因为list1的改变而改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-14 13:27:35 | 显示全部楼层
  1. In [1]: list1 = [1,2,3,4,5]

  2. In [2]: list2 = list1

  3. In [3]: id(list1)
  4. Out[3]: 78601992

  5. In [4]: id(list2)
  6. Out[4]: 78601992

  7. In [5]: list1 = [6]

  8. In [6]: id(list1)
  9. Out[6]: 76555592

  10. In [7]: id(list2)
  11. Out[7]: 78601992
复制代码


list1列表重新赋值,内存地址会发生改变,而list2还是绑定之前列表的内存地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-14 15:08:05 | 显示全部楼层
Seawolf 发表于 2019-6-14 13:18
因为改变的是list1 而print list2,list1和list2是两个不同的变量,list2不会因为list1的改变而改变

list1 = [5,2,3,1,6]
list3 = list1
list1.sort()
print(list1)
print(list3)

list1 = [5,2,3,1,6]
list2 = list1
list1 = [6]
print(list1)
print(list2)

[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]

[6]
[5, 2, 3, 1, 6]

list1.sort()是将list1重新排序了。这个算改变list1吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-14 15:15:41 | 显示全部楼层
本帖最后由 Seawolf 于 2019-6-14 15:17 编辑
Moshiro0830 发表于 2019-6-14 15:08
list1 = [5,2,3,1,6]
list3 = list1
list1.sort()


对的,这个算是改变list1了(补充一下,这个改的是数据,地址没有改,如果重新赋值是会改地址的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-14 15:21:58 | 显示全部楼层
Seawolf 发表于 2019-6-14 15:15
对的,这个算是改变list1了(补充一下,这个改的是数据,地址没有改,如果重新赋值是会改地址的)

也就是说只要重新赋值,就是改变地址,改变地址的话,list3不会跟随一起改变。而如果是改变数据的话,list3会跟随一起改变。可以这么理解吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-14 15:25:25 | 显示全部楼层
本帖最后由 Seawolf 于 2019-6-14 15:26 编辑
Moshiro0830 发表于 2019-6-14 15:21
也就是说只要重新赋值,就是改变地址,改变地址的话,list3不会跟随一起改变。而如果是改变数据的话,lis ...


是的,因为list3的地址和list1是一样的(赋值赋的是数据的地址),数据改变两个都会变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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