python - 可散列和不可变之间有什么区别?
问题描述
- immutable 和 hash-able 和有什么区别?
- 这是什么意思“如果一个对象的哈希值在其生命周期内永远不会改变,那么它是可哈希的?”
- 元组是不可变和可散列的还是仅不可变的?为什么 ?
解决方案
散列是一些散列算法对一大块数据的应用;通常是一种将其压缩为可在哈希查找表中搜索的小得多的值的方法。散列的一些示例包括MD5和SHA-2。
一些散列在产生冲突时被认为是“失效的”——这意味着两个非常不同的数据会产生相同的“压缩”字符串或整数。MD5 已失效,因为存在冲突,但大多数 SHA-2 变体没有。
不变性是确保某些东西不会改变的过程。例如,想象一个 C 程序的静态二进制文件。一旦将其发布到万维网或最终用户,您不希望其内容发生变化,因此您希望它是不可变的。
这与散列有关。一旦你“散列”了一个对象,你就不希望它的内容改变,否则你会得到一个不同的散列。如果你改变了内容并且哈希没有改变,那么你就会发生冲突!
元组只是一种数据结构,应该是不可变的和可散列的。如果您在执行此操作时遇到问题,则可能是代码问题。
推荐阅读
- c - 如果在一秒钟内执行“x”次,srand 和 rand 创建相同的数字
- javascript - 找不到匹配项(GAS)时如何在下一个空单元格中插入字符串?
- c# - 在 C# Windows 窗体中将连续输出从控制台重定向到 RichtextBox
- office-js - Scriptlab自定义函数获取TypeError:进行GET api调用时网络请求失败
- php - 为什么 id 变量没有传递给这个文件?
- python - 在 Python 中循环运行命令行参数
- opengl - 多重采样如何适用于整数纹理
- android - 在哪里可以找到 exoplayer 旧文档
- c - 使用 CMake 在 C 中进行依赖管理
- sql-server - Deadlock issue in MSFlow - Update data from CDS to SQL