这篇文章主要介绍python中不可变数据类型与可变数据类型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强> 1。名词解释强>
以下所有的内容都是基于内存地址来说的。
- <李>
不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
李> <李>可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
李>总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
<强> 2。数据类型分类强>
在python中数据类型有:整型,字符串,元组,集合,列表,字典。接下来我们用例子来一一查看他们分别属于不可变数据类型还是可变数据类型。
<强> 2.1整型
强>
a =1 打印(id (a)、类型(a)) 时间=a 2 打印(id (a)、类型(a)) 1912499232,& lt; class & # 39; int # 39;比; 1912499264,& lt; class & # 39; int # 39;在
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么整型就是不可变数据类型。
<强> 2.2字符串强>
b =, & # 39; djx& # 39; 打印(id (b)、类型(b)) 时间=b & # 39; djx1996& # 39; 打印(id (b)、类型(b)) 535056476344,& lt; class & # 39; str # 39;比; 535056476624,& lt; class & # 39; str # 39;在
我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么字符串就是不可变数据类型。
<强> 2.3元组强>
元组被称为只读列表,即数据可以被查询,但不能被修改,但是我们可以在元组的元素中存放一个列表,通过更改列表的值来查看元组是属于可变还是不可变。
c1 =, (& # 39; 1 & # 39; & # 39; 2 & # 39;】 c =, (1、2、c1) 打印(c, id (c)、类型(c)) c1 [1],=, & # 39; djx& # 39; 打印(c, id (c)、类型(c)) 结果: (1,,2,,[& # 39;1 & # 39;,,& # 39;2 & # 39;]),386030735432,& lt; class & # 39;元组# 39;比; (1,,2,,[& # 39;1 & # 39;,,& # 39;djx& # 39;]), 386030735432, & lt; class & # 39;元组# 39;在
我们可以发现,虽然元组数据发生改变,但是内存地址没有发生了改变,但是我们不可以以此来判定元组就是可变数据类型。我们回头仔细想想元组的定义就是不可变的。我们修改了元组中列表的值,但是因为列表是可变数据类型,所以虽然在列表中更改了值,但是列表的地址没有改变,列表在元组中的地址的值没有改变,所以也就意味着元组没有发生变化。我们就可以认为元组是不可变数据类型,因为元组是不可变的。
<强> 2.4集合强>
集合我们常用来进行去重和关系运算,集合是无序的。
s =, {1 & # 39; d # 39;, & # 39; 34 & # 39;, & # 39; 1 & # 39;, 1} 打印(年代,类型(s)、身份证(s)) s.add (& # 39; djx& # 39;) 打印(年代,类型(s)、身份证(s)) 结果: {& # 39;d # 39;,, 1,, & # 39; 34 & # 39;,, & # 39; 1 & # 39;}, & lt; class & # 39;集# 39;在870405285032 {1,& # 39;34 & # 39;,,& # 39;djx& # 39;,, & # 39; 1 & # 39;,, & # 39; d # 39;}, & lt; class & # 39;集# 39;祝辞,870405285032
我们可以发现,虽然集合数据发生改变,但是内存地址没有发生了改变,那么集合就是可变数据类型。
<强> 2.5列表
强>
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,它是以[]括起来,每个元素以逗号隔开,而且它里面可以存放各种数据类型。
list =,(1) & # 39;提问# 39;,& # 39;qwer& # 39;,真的) 打印(列表、类型(列表),id(列表) list.append (& # 39; djx& # 39;) 打印(列表、类型(列表),id(列表) 结果: [1,& # 39;提问# 39;,,& # 39;qwer& # 39;,,真的),& lt; class & # 39;列表# 39;在808140621128 [1,& # 39;提问# 39;,,& # 39;qwer& # 39;,,真的,,& # 39;djx& # 39;], & lt; class & # 39;列表# 39;祝辞,808140621128
我们可以发现,虽然列表数据发生改变,但是内存地址没有发生了改变,那么列表就是可变数据类型。
<强> 2.6字典
强>
字典是python中唯一的映射类型,采用键值对(键值)的形式存储数据.python对关键进行哈希函数运算,根据计算的结果决定值的存储地址,所以字典是无序存储的。但是在3.6版本后,字典开始是有序的,这是新的版本特征。