关于PYTHON变量与C变量的区别
在011谭后题有这样一个题5. 课堂上小甲鱼说可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?
解释是不可以,意思就是如果直接list2 = list1的话,相当于类似只是增加了一个指针,它指向list1指向的那一片列表的空间,如果list1变了,list2会跟着变
我试了一下,确实是。
但是,我用单个变量试了一下,又不是
这是为什么呢
你搜一下python可哈希对象 把一个列表直接赋值为另外一个列表的话即使是与它相关联的列表也不会变化
可以理解为两个关联列表是一个列表贴上两个不一样名字的标签,比如a和b,但是我在直接赋值来更改a时是把a撕下来,贴到另外一个列表上,所以b不会变化 这样表示新建一个同名变量 本帖最后由 5695585 于 2020-5-6 22:59 编辑
老八秘制 发表于 2020-5-6 22:37
把一个列表直接赋值为另外一个列表的话即使是与它相关联的列表也不会变化
可以理解为两个关联列表是一个列 ...
那么我下面那个单独的一个数字的变量为什么不跟着变呢
>>> name = 3
>>> name1 = name
>>> name1
3
>>> name = 2
>>> name1
3
name已经变成2了
name1还是3
似乎专门为name1分配了内存 5695585 发表于 2020-5-6 22:58
那么我下面那个单独的一个数字的变量为什么不跟着变呢
直接赋值的时候只有列表会关联,整型变量不会 这个关系,建议看下老男孩的变量教程那几集,解释的很清楚
在python中,整型int、字符串string、列表list、集合set、字典dict等等都可称之为对象,而这些不同类型的对象是有区别的,可以分为两类:不可变类型对象和可变类型对象。数字numbers、字符串string、元组tuples等是不可变类型对象,列表list、字典dict、集合set等是可变类型对象。
不可变类型对象就是一旦生成,就不可更改的对象,而可变类型对象是生成之后可以进行增删改等修改操作的对象。
python细节之2、变量名与标签 变量的赋值与修改 {:5_108:}
页:
[1]