zoukankan      html  css  js  c++  java
  • Python中的hashable(散列)

    Python文档中的解释:

    一个对象是可散列的,那么在它的生命周期中它的hash 值是不变的。

    可散列的对象需要2个方法:__hash__()方法和__eq__()方法。两个可散列的对象相等,那么它们的散列值相等。

     

    可散列的对象可以作为字典的key,作为set的成员。但是字典,set本身是不可散列的。

     

    Python所有内置的不可变的对象都是hashable,可变的容器(比如lists或dictionaries)不是hashable。

    用户定义的类的对象默认是hashable的,它们的hash值来自它们的id()。

    Python hash()函数

    描述

    hash() 用于获取取一个对象(字符串或者数值等)的哈希值。

    语法

    hash 语法:

    hash(object)

    参数说明:

    • object -- 对象;
    • 返回值

      返回对象的哈希值。

      实例

      以下实例展示了 hash 的使用方法:

       

    hash() 函数可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。

    在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。

    class Test:
        def __init__(self, i):
            self.i = i
    for i in range(10):
        t = Test(1)
        print(hash(t), id(t))

    输出结果:

    (277855628, 4445690048)
    (277855637, 4445690192)
    (277855628, 4445690048)
    (277855637, 4445690192)
    (277855628, 4445690048)
    (277855637, 4445690192)
    (277855628, 4445690048)
    (277855637, 4445690192)
    (277855628, 4445690048)
    (277855637, 4445690192)

    列表,字典,集合是无法散列的,因为它们在改变值的同时却没有改变id,无法由地址定位值的唯一性,因而无法散列。
    
    
    
    如有疑问请联系我,写的不对的地方请联系我进行更改,感谢~ QQ:1968380831
  • 相关阅读:
    小例子-使用JS/JQ获取a标签的href网址
    R语言随手记-线性回归模型诊断
    R语言随手记-数据处理
    正选择分析-PAML discussion group
    ggtree-基本函数使用
    PhastCons
    R语言随手记-批量读取和循环处理多个数据文件
    变异位点有害性软件评估
    ggplot画图-分页and排序
    R画图-标题和坐标轴篇
  • 原文地址:https://www.cnblogs.com/1zhangwenjing/p/9072689.html
Copyright © 2011-2022 走看看