python中,雜湊是一種將相對複雜的值簡化成小整數的計算方式。雜湊值可以表示出原值所有的位,有些雜湊值會得出非常大的數值,這樣的演算法通常用於密碼學。
python中也有基礎的模組庫可以支援部分雜湊的演算法。
不同的平台、不同的系統雜湊值的計算可能會不同,這裡簡單對我自己的電腦做乙個試探。寫如下測試**:
x = object()
print(hash(x))
print(id(x))
print(id(x)/hash(x))
x = 123
print(hash(x))
print(id(x))
print(id(x)/hash(x))
在win10的ubuntu系統中執行如下:
grey@desktop-3t80npq:/mnt/e/01_workspace/02_programme_language/03_python/03_oop/2017/08/16$python hash.py
grey@desktop-3t80npq:/mnt/e/01_workspace/02_programme_language/03_python/03_oop/2017/08/16$python -v
python 2.7.6
在win10下的執行結果如下;
e:\01_workspace\02_programme_language\03_python\03_oop\2017\08\16>pythonhash.py
16.0
11443598.829268293
e:\01_workspace\02_programme_language\03_python\03_oop\2017\08\16>python-v
python 3.6.0
兩個平台同時又是兩個不同的軟體版本,執行的結果確實是有一點差異。但是,試探的物件建立的例子卻跟我在其他地方看見的方式差不多,相應的雜湊是通過id除以16實現的。只不過,在py2中的計算是整型,而py3中的計算則是浮點數。
C 指標常識的小結
常見錯誤 指標未初始化,就進行取值操作 對乙個null指標取值 傳參 引數為null指正 指標表示式的錯誤,或者 等越界,對乙個指標進行減法運算,非法地指向了陣列的第乙個元素前面的記憶體位置 為什麼c語言中沒有一種方法來宣告字面值指標常量呢?這個問題需要分兩種情況討論,1 一般情況 對於全域性變數,...
說說Python中字典和雜湊表,雜湊衝突的解決原理
雜湊表 python 用雜湊表來實現 dict。雜湊表其實是乙個稀疏陣列 總是有空白元素的陣列稱為稀疏陣列 在一般書中,雜湊表裡的單元通常叫做表元 bucket 在 dict 的雜湊表當中,每個鍵值對都占用乙個表元,每個表元都有兩個部分,乙個是對鍵的引用,乙個是對值的引用。因為每個表元的大小一致,所...
Perl中陣列和雜湊表的用法小結(ZZ)
1 二維陣列 a b 1 2 3 c 4 5 6 a 0 b a 1 c 1 print a 0 0 n print a 1 0 n print a 0 0 n print a 1 0 n 2 foreach 2 n will print value of b 2 and c 2 print n w...