内容简介:在学习Python过程中我们一定会遇到不可变数据类型和可变数据类型。以下所有的内容都是基于内存地址来说的。不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
在学习 Python 过程中我们一定会遇到不可变数据类型和可变数据类型。
1.名词解释
以下所有的内容都是基于内存地址来说的。
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
2.数据类型分类
在python中数据类型有:整型,字符串,元组,集合,列表,字典。接下来我们用例子来一一查看他们分别属于不可变数据类型还是可变数据类型。
2.1 整型
a = 1
(id(a),type(a))
= 2(id(a),type(a))
1912499232 < class ' int ' >'
>
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么 整型就是不可变数据类型 。
2.2 字符串
b = ' djx '
(id(b),type(b))
= ' djx1996 '(id(b),type(b))
535056476344 < class ' str ' >'
>
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么 字符串就是不可变数据类型 。
2.3 元组
元组被称为只读列表,即数据可以被查询,但不能被修改,但是我们可以在元组的元素中存放一个列表,通过更改列表的值来查看元组是属于可变还是不可变。
]
c
= ( 1 , 2,c1)
print(c,
id(c),type(c))
c1[
1 ] = ' djx ' print(c, id(c),type(c))
result:
(
1 , 2 , [ ' 1 ' , ' 2 ' ]) 386030735432我们可以发现,虽然元组数据发生改变,但是内存地址没有发生了改变,但是我们不可以以此来判定元组就是可变数据类型。我们回头仔细想想元组的定义就是不可变的。我们修改了元组中列表的值,但是因为列表是可变数据类型,所以虽然在列表中更改了值,但是列表的地址没有改变,列表在元组中的地址的值没有改变,所以也就意味着元组没有发生变化。我们就可以认为 元组是不可变数据类型 ,因为元组是不可变的。
2.4 集合
集合我们常用来进行 去重和关系运算,集合是无序的。
}
print(s,type(s),
id(s))
s.add(
' djx ')
print(s,type(s),
id(s))
result:
{
' d ' , 1 , ' 34 ' , ' 1 ' }我们可以发现,虽然集合数据发生改变,但是内存地址没有发生了改变,那么 集合就是可变数据类型 。
2.5 列表
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,它是以[]括起来,每个元素以逗号隔开,而且它里面可以存放各种数据类型。
,True]
print(list,type(list),
id(list))
list.append(
' djx ')
print(list,type(list),
id(list))
result:
[
1 , ' q ' , ' qwer ' , True]我们可以发现,虽然列表数据发生改变,但是内存地址没有发生了改变,那么 列表就是可变数据类型 。
2.6 字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的。但是在3.6版本后,字典开始是有序的,这是新的版本特征。
字典的key值可以是整型,字符串,元组,但是不可以是列表,集合,字典。
)
dic
= { 1 : 2}
d
= { tuple: 1 , ' key2 ' : ' djx ' , ' key3 ' : ' li '}
print(d,type(d),
id(d))
d[
' key4 ' ] = ' haha ' print(d,type(d), id(d))
result:
{
1 : 1 , ' key2 ' : ' djx ' , ' key3 ' : ' li ' }我们可以发现,虽然字典数据发生改变,但是内存地址没有发生了改变,那么 字典就是可变数据类型 。
数据类型 | 可变/不可变 |
整型 | 不可变 |
字符串 | 不可变 |
元组 | 不可变 |
列表 | 可变 |
集合 | 可变 |
字典 | 可变 |
更多Python相关信息见 Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-03/157357.htm
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Markdown 在线编辑器
Markdown 在线编辑器
HSV CMYK 转换工具
HSV CMYK互换工具