zoukankan      html  css  js  c++  java
  • Python的数据类型总结

    原地可变类型和不可变类型

    原地不可变类型又叫可哈希(hashable)类型,原地可变类型又叫不可哈希类型。

    原地不可变类型:

    • 数字类型:int, float, decimal.Decimal, fractions.Fraction, complex
    • 字符串类型:str, bytes
    • tuple
    • frozenset
    • 布尔类型:True, False
    • None

    原地可变类型:

    • list
    • dict
    • set

    如何实际检验是否原地可变

    hash还是会返回原地不可变类型的hash值,如果对一个原地可变的类型调用次函数,那么会返回TypeError。
    只有可以hash的类型才可以作为dict的键。
    只有可以hash的类型才可以放入set中,所以set本身不可以嵌套存放在set中。
    举例说明:

    >>> hash(b'aaa')
    6904179387427091653
    >>> hash(bytearray(b'aaa'))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'bytearray'
    >>> hash(frozenset({1,2,3}))
    -7699079583225461316
    >>> hash({1,2,3})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'set'
    

    如何实际检验操作是否是原地变化。

    内置函数id()会返回一个对象在内存中实际的存放地址。

    >>> L=[1]
    >>> id(L)
    49689480
    >>> L.append(2)
    >>> id(L)
    49689480    #在原地修改,所以可以看到存放地址没有发生改变。
    >>> s='aa'
    >>> id(s)
    47072456
    >>> s+='bb'
    >>> id(s)
    49700008    #由于不可以在原地修改,所以当字符串变动后,新开辟了一个内存地址进行存放。
    >>>
    

    数据保存是否有序

    有序的数据类型

    有序的数据类型称为序列,支持索引、分片、加法、乘法、计算长度、比较大小操作。
    比较时会依次比较每个元素的大小,如果依次比较时发现类型不相同会跳出错误。

    • list
    • tuple
    • str
    • bytes

    无序的数据类型

    • dict
    • set
  • 相关阅读:
    如何在IIS7/7.5上配置IISADMPWD
    运用DebugDiag诊断ASP.Net异常
    vuecli3修改项目启动端口
    彻底删除vscode及安装的插件和个人配置信息
    angular中的 input select 值绑定无效,以及多出一个空白选项问题
    简述MVC模式
    vuecli3 运行报错
    前端开发规范
    nodejs 下载最新版本
    小程序 自定义弹窗出现后存在滚动穿透问题
  • 原文地址:https://www.cnblogs.com/jessonluo/p/4741918.html
Copyright © 2011-2022 走看看