python有哪些数据类型是可hash的_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 "", 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.gxlcms.com)!

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值