美文网首页大数据 爬虫Python AI Sql
扣丁学堂Python开发解析不可变数据类型与可变数据类型

扣丁学堂Python开发解析不可变数据类型与可变数据类型

作者: 994d14631d16 | 来源:发表于2018-09-19 10:43 被阅读2次

今天扣丁学堂Python培训老师给大家介绍一下关于python中的不可变数据类型与可变数据类型的详解,下面我们一起来看一下吧。

首先python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其实这个特点类似于JAVA,所以在python里面大家也不用担心类似于C/C++中的指针的复杂问题, 在python中数据分为可变数据类型,不可变数据类型。

1、名词解释

以下所有的内容都是基于内存地址来说的。

不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。

总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

2.数据类型分类

在python中数据类型有:整型,字符串,元组,集合,列表,字典。接下来我们用例子来一一查看他们分别属于不可变数据类型还是可变数据类型。

2.1 整型

a =1

print(id(a),type(a))

a =2

print(id(a),type(a))

1912499232<class'int'>

1912499264<class'int'>

我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么整型就是不可变数据类型。

2.2 字符串

b ='djx'

print(id(b),type(b))

b ='djx1996'

print(id(b),type(b))

535056476344<class'str'>

535056476624<class'str'>

我们可以发现,当数据发生改变后,变量的内存地址发生了改变,那么字符串就是不可变数据类型。

2.3 元组

元组被称为只读列表,即数据可以被查询,但不能被修改,但是我们可以在元组的元素中存放一个列表,通过更改列表的值来查看元组是属于可变还是不可变。

c1 =['1','2']

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<class'tuple'>

(1, 2, ['1', 'djx']) 386030735432<class'tuple'>

我们可以发现,虽然元组数据发生改变,但是内存地址没有发生了改变,但是我们不可以以此来判定元组就是可变数据类型。我们回头仔细想想元组的定义就是不可变的。我们修改了元组中列表的值,但是因为列表是可变数据类型,所以虽然在列表中更改了值,但是列表的地址没有改变,列表在元组中的地址的值没有改变,所以也就意味着元组没有发生变化。我们就可以认为元组是不可变数据类型,因为元组是不可变的。

2.4 集合

集合我们常用来进行去重和关系运算,集合是无序的。

s ={1,'d','34','1',1}

print(s,type(s),id(s))

s.add('djx')

print(s,type(s),id(s))

result:

{'d', 1, '34', '1'} <class'set'> 870405285032

{1, '34', 'djx', '1', 'd'} <class'set'> 870405285032

我们可以发现,虽然集合数据发生改变,但是内存地址没有发生了改变,那么集合就是可变数据类型。

2.5 列表

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,它是以[]括起来,每个元素以逗号隔开,而且它里面可以存放各种数据类型。

list=[1,'q','qwer',True]

print(list,type(list),id(list))

list.append('djx')

print(list,type(list),id(list))

result:

[1, 'q', 'qwer', True] <class'list'> 808140621128

[1, 'q', 'qwer', True, 'djx'] <class'list'> 808140621128

我们可以发现,虽然列表数据发生改变,但是内存地址没有发生了改变,那么列表就是可变数据类型。

2.6 字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的。但是在3.6版本后,字典开始是有序的,这是新的版本特征。

字典的key值可以是整型,字符串,元组,但是不可以是列表,集合,字典。

tuple=(1)

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'} <class'dict'> 256310956320

{1: 1, 'key2': 'djx', 'key3': 'li', 'key4': 'haha'} <class'dict'> 256310956320

我们可以发现,虽然字典数据发生改变,但是内存地址没有发生了改变,那么字典就是可变数据类型。

以上就是关于扣丁学堂Python开发解析不可变数据类型与可变数据类型的全部内容了,希望对同学们理解Pyhon开发有所帮助。

相关文章

  • 扣丁学堂Python开发解析不可变数据类型与可变数据类型

    今天扣丁学堂Python培训老师给大家介绍一下关于python中的不可变数据类型与可变数据类型的详解,下面我们一起...

  • 2019-05-01派森学习第163天

    21、列出python中可变数据类型和不可变数据类型,并简述原理 不可变数据类型:数值型、字符串型string和元...

  • python面试题(二)

    1、列出python中可变数据类型和不可变数据类型,并简述 不可变数据类型:数值型、字符串型string和元组tu...

  • 11月5日Python小白入门必修之python数据类型详解

    今天扣丁学堂Python培训直播公开课给大家介绍一下关于Python小白入门必修之python数据类型的详细介绍,...

  • Python - mutable immutable

    因为python 的数据类型分为两种:mutable(可变的) 与 immutable(不可变的)mutable ...

  • python元组与列表

    Python中的基本顺序存储结构是列表与元组,其中列表是可变数据类型,元组是不可变数据类型。可变指的是列表中的元素...

  • 列表

    Python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合 容器...

  • 2018年6月19日【python学习笔记】

    列表 python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合...

  • python 的可变数据类型和不可变数据类型

    python 的数据类型?数值类型、字符串、元组、列表、字典、集合(不常用) 2.可变数据类型 和 不可变数据类型...

  • 三、Python高级

    1 Python里的拷贝 1.1 顶层对象为不可变数据类型 1.1.1 子元素都为不可变数据类型 1.1.2 子元...

网友评论

    本文标题:扣丁学堂Python开发解析不可变数据类型与可变数据类型

    本文链接:https://www.haomeiwen.com/subject/ohgbnftx.html