zoukankan      html  css  js  c++  java
  • (5)可变、不可变和hash函数

    分类情况

    与列表相似,列表用[],元组是()表示

    内存角度看列表与数字的变与不变

    列表

    >>>l = [1,2,3,4]

    >>>id(l) 4392665160

    >>>l[1] = 1.5    #这里将item1的数字改成1.5

    >>>id(l) 4392665160 数字

    >>>a = 1

    >>>id(a) 4297537952

    >>>a += 1

    >>>id(a) 4297537984

    列表的item是可变的,变化后内存地址是不变的

    字符串

    >>>s = 'hello'

    >>>s[1] = 'a' PS:由于字符串不能直接修改值,所以会报错Traceback

    >>>s = 'hello'

    >>>id(s) 4392917064

    >>>s += ' world'

    >>>s 'hello world'

    >>>id(s) 4393419504

    PS:字符串也可以像列表一样做索引操作,但是我们不能像修改列表一样修改一个字符串的值,当我们对字符串进行拼接的时候,原理和整数一样

    元组不允许修改

    >>>t = (1,2,3,4)

    >>>t[1] = 1.5

    PS:元组不可修改,所以修改直接报错Traceback

    PS:hash值的计算过程是依据这个值得一些特征计算的,这就要求被hash的值必须固定,如果s的值变成t了,那么计算结果就会发生改变。可变的数据类型是不可以被hsah的,如果一个值可以hash那么说明这是一个不可变的数据类型

  • 相关阅读:
    文件上传长度限制
    js之图片放大
    Jquery中$与$.fn的区别
    取消svn和文件的关联
    Java——如何创建文件夹及文件,删除文件,文件夹
    SQL语法
    linux环境运行java项目并有外部引用jar
    Eclipse-与Centos远程调试
    Eclipse-远程调试
    使用java代码执行linux命令
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/9871766.html
Copyright © 2011-2022 走看看