Python的数据类型总结

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航