原地可变类型和不可变类型
原地不可变类型又叫可哈希(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 “”, line 1, in typeerror: unhashable type: ‘bytearray’>>> hash(frozenset({1,2,3}))-7699079583225461316>>> hash({1,2,3})traceback (most recent call last): file “”, line 1, in 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的数据类型总结的内容,更多相关文章请关注php中文网(www.php1.cn)!