python中的可雜湊和不可改變性

2021-07-29 03:35:04 字數 607 閱讀 8537

1.可雜湊(hashable)和不可改變性(immutable)

如果乙個物件在自己的生命週期中有一雜湊值(hash value)是不可改變的,那麼它就是可雜湊的(hashable)的,因為這些資料結構內建了雜湊值,每個可雜湊的物件都內建了__hash__方法,所以可雜湊的物件可以通過雜湊值進行對比,也可以作為字典的鍵值和作為set函式的引數。所有python中所有不可改變的的物件(imutable objects)都是可雜湊的,比如字串,元組,也就是說可改變的容器如字典,列表不可雜湊(unhashable)。我們使用者所定義的類的例項物件預設是可雜湊的(hashable),它們都是唯一的,而hash值也就是它們的id()。

2.  雜湊

它是乙個將大體量資料轉化為很小資料的過程,甚至可以僅僅是乙個數字,以便我們可以用在固定的時間複雜度下查詢它,所以,雜湊對高效的演算法和資料結構很重要。

3. 不可改變性

它指一些物件在被建立之後不會因為某些方式改變,特別是針對任何可以改變雜湊物件的雜湊值的方式

4. 聯絡:

因為雜湊鍵一定是不可改變的,所以它們對應的雜湊值也不改變。

如果允許它們改變,,那麼它們在資料結構如雜湊表中的儲存位置也會改變,因此會與雜湊的概念違背,效率會大打折扣

Pyhon中的可雜湊的值和不可雜湊的值

python中可雜湊的值 hashable 和不可雜湊的值 unhashable 可雜湊的值 hashable 可雜湊的資料型別,即 不變的資料結構 數字 字母 字串str 元祖tuple 物件objects 不可雜湊的值 unhashable 不可雜湊的資料型別,即 可變的資料結構 列表list ...

python可hash型別和不可hash型別

最近在寫 的時候發現了乙個問題 我有一系列的元組 實際上是強化學習的state和action 它們要作為字典的鍵,而值是reward,我以前一直認為只有字串才能作為鍵,然後就用str 函式將元組轉化成string型別,後來要畫圖,又要得到字典的鍵,得到的是帶有元組括號的一些雜七雜八的東西。後來才想起...

Linux中的可重入函式和不可重入函式

標籤 linux 多執行緒處理器 行業資料 全域性變數 2013 04 18 10 25 3484人閱讀 收藏舉報 分類 unix環境高階程式設計 55 作者同類文章 x可重入函式 可重入函式 即可以被中斷的函式 可以被乙個以上的任務呼叫,而不擔心資料破壞。可重入函式在任何時候都可以被中斷,而一段時...