最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python序列中可变数据类型有什么

    正文概述    2020-02-16   198

    python序列中可变数据类型有什么

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

    所以在学习python过程中我们一定会遇到不可变数据类型和可变数据类型。下面话不多说了,来一起看看详细的介绍吧。

    1.名词解释

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

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

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

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

    相关推荐:《Python教程》

    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序列中可变数据类型有什么


    起源地下载网 » python序列中可变数据类型有什么

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元