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

原地不可变类型又叫可哈希(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

Python的数据类型总结的更多相关文章

  1. python 基本数据类型分析

    在python中,一切都是对象!对象由类创建而来,对象所拥有的功能都来自于类.在本节中,我们了解一下python基本数据类型对象具有哪些功能,我们平常是怎么使用的. 对于python,一切事物都是对象 ...

  2. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  3. 闲聊之Python的数据类型 - 零基础入门学习Python005

    闲聊之Python的数据类型 让编程改变世界 Change the world by program Python的数据类型 闲聊之Python的数据类型所谓闲聊,goosip,就是屁大点事可以咱聊上 ...

  4. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  5. Python入门-数据类型

    一.变量 1)变量定义 name = 100(name是变量名 = 号是赋值号100是变量的值) 2)变量赋值 直接赋值 a=1 链式赋值  a=b=c=1 序列解包赋值  a,b,c = 1,2,3 ...

  6. Python基础:八、python基本数据类型

    一.什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但从某种角度上来看又很傻,除非你明确告诉它,"1"是数字,"壹&quo ...

  7. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  8. Python特色数据类型(列表)(上)

    Python从零开始系列连载(9)——Python特色数据类型(列表)(上) 原创 2017-10-07 王大伟 Python爱好者社区 列表 列表,可以是这样的: 分享了一波我的网易云音乐列表 今天 ...

  9. 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】

    1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...

  10. python基本数据类型之集合

    python基本数据类型之集合 集合是一种容器,用来存放不同元素. 集合有3大特点: 集合的元素必须是不可变类型(字符串.数字.元组): 集合中的元素不能重复: 集合是无序的. 在集合中直接存入lis ...

随机推荐

  1. Linux 内核进程管理之进程ID 。图解

    http://www.cnblogs.com/hazir/tag/kernel/ Linux 内核进程管理之进程ID   Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数 ...

  2. 单核CPU,多线程与性能

      问题概述 单核CPU的计算机上, 多线程能够提高程序运行的性能吗? 这个问题看起来简单,实际很复杂,设计到多方面的因素. 首先我们要把概念搞清楚, 那就是什么是性能? 一般来说, 我们把运行一个任 ...

  3. js渐变显示渐变消失

    以下是渐变的js代码(表示多余三行的要隐藏,点击"more"显示剩下的,点击“less”要逐渐隐藏): function showAccomplishmentTableRow(){ ...

  4. C++ notes for beginners

    作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)版权声明:本文的版权归作者与博客园共同所有.转载时请在明显地方注明本文的详细链接,未经作者同意请不要删 ...

  5. javascript的一点误解

    var a=[]; for(var i = 0; i < 10; i++) { a[i] = function() { return i; } } console.log(a[9]()); co ...

  6. R-大数据分析挖掘(4-R爬虫实现)

     library("XML") #获取全部的链接 url <- 'http://www.csdn.net/tag/' i_url_parse<-htmlParse(ur ...

  7. MVC小系列(三)【MVC的分部视图】

    MVC的分部视图: 分部视图在action中返回一定要用PartialView(),而不要偷懒使用View(),因为如果使用后者,系统会认为是一个标准视图,会为它加个默认的母版页(LayOut),除非 ...

  8. 学习笔记_过滤器详细_2(过滤器JavaWeb三大组件之一)

    过滤器详细 5 四种拦截方式 我们来做个测试,写一个过滤器,指定过滤的资源为b.jsp,然后我们在浏览器中直接访问b.jsp,你会发现过滤器执行了! 但是,当我们在a.jsp中request.getR ...

  9. 【转】 iOS 学习之 NSPredicate 模糊、精确、查询

    简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 定义(最常用到的方法): NSPredicate *ca = [NSPred ...

  10. IOS 本地通知

    操作流程 1.接收通知 2.注册发送通知 用途:提示时间,闹钟 //接收本地通知(在Appdelegate里面实现) - (void)application:(UIApplication *)appl ...