QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
47
查看: 98|回复: 2

关于变量赋值

[复制链接]
最佳答案
0 
累计签到:40 天
连续签到:10 天
刘超峰 发表于 2018-4-16 22:06:53 982 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
>>> list1 = [3,4,2,1]
>>> list2 = list1[:]
>>> list3 = list1
>>> list2
[3, 4, 2, 1]
>>> list3
[3, 4, 2, 1]
>>> list1.sort()
>>> list2
[3, 4, 2, 1]
>>> list3
[1, 2, 3, 4]
>>> list1 = [0]
>>> print(list1)
[0]
>>> list2
[3, 4, 2, 1]
>>> list3
[1, 2, 3, 4]
请问为啥改变list1的顺序后 赋值给的list3会跟着改变 但是改变list1的内容以后 list3就不跟着变了呢 为啥啊不是说变量只是一个名字吗list1的都变成【0】了 按理说list3也会变啊
楼层
跳转到指定楼层
最佳答案
931 
累计签到:309 天
连续签到:62 天
BngThea 发表于 2018-4-16 22:17:24 From FishC Mobile | 显示全部楼层
Python中变量名只是标签而已,一个内存块可以由多个标签指向它,当你修改内存块的内容,比如列表的sort函数或者append等操作时,所有标签的结果都会跟着变
但是你用赋值操作将某一个变量名指向另一块内存,那么它和原来的数据块再无瓜葛
最佳答案
1 
累计签到:10 天
连续签到:1 天
华丽转身123 发表于 2018-4-16 22:27:16 | 显示全部楼层
楼上说的对,list1 和list3  变量名都指向[3,4,2,1]所在的地址空间,对它执行sort()操作时list1 和list3还是指向那里,当给list赋值时list1指向了[0]所在的地址空间,但list3还是不变还是指向[3,4,2,1],不过它的值变了,但他是在再原来的地址上变,list3不管它什么变,我只要指向你,你是什么我的值就是什么(新手的理解,不对请指教)

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-24 18:51

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