日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 长度queue_python:常见的数据结构

發布時間:2025/3/11 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 长度queue_python:常见的数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? Python中常見的數據結構可以統稱為容器。序列(如列表和元組)、映射(如字典)以及集合(set)是三類主要的容器。線性數據結構分類:棧(stack)--先進后出、 隊列(queue)-先進先出、雙端隊列(deque)、鏈表(LinkedList)。

常見的數據類型又分為:數字、字符串、元組、列表、字典、集合。

可變數據類型

列表、字典、集合 不可哈希 不可變數據類型元組、數字、字符串 可哈希 可哈希對象是對象擁有__hash__(self)內置函數的對象。對于可哈希的對象執行這個函數將會返回一個整數。 可哈希對象判斷相等的唯一條件就是兩者 的哈希值相等。下面通過一個例子來說明: tuple_a = (1, 2, 3) # 元組a dict_b = {"a": 1, "b": 2} # 字典b dict_c = {"b": 2, "a": 1} # 字典c print(tuple_a.__hash__) print(dict_b.__hash__) print(id(str(sorted(dict_b)))) print(id(str(sorted(dict_c)))) print(hash(str(sorted(dict_b)))) print(hash(str(sorted(dict_c)))) >>> <method-wrapper '__hash__' of tuple object at 0x00000275A3DF6C18>>>> None>>> 2704397351728 >>> 2704397351728 >>> -589638267386482414 >>> -589638267386482414我們可以輸出結果中元組返回了一個對象的'__hash__'method,而字典返回的結果None;字典是不能hash的, 但是我們可以將字典轉成字符串再進行hash,sorted是將字典進行排序, 返回的結果顯示兩者轉成字符串后的id跟hash值都是一樣的,間接的說明了字典b跟字典c也是相等的 (補充:sorted:適用于任何可迭代容器)

哈希有啥作用?

它是一個將大體量數據轉化為很小數據的過程,甚至可以僅僅是一個數字,以便我們可以用在固定的時間復雜度下查詢它,所以,哈希對高效的算法和數據結構很重要。Python 中基于hash的2個數據類型是dict and set , 之前說dict查詢速度快,為何快? 說set天生去重,怎么做到的?其實都是利用了hash的特性,我們下面來剖析dict 為何查詢速度超快,且不受dict大小影響 ?

解析:假設我要存14億人的基本信息

data = {

"張三":[23742364782642342323234,28,"山東濟南"],

"李四":[12124234232311214458271,25,"北京昌平"],

"王五":[23030293483727384383929,33,"山東濟南"],

"趙六":[42302033030302482634674,28,"河北保定"],

... ...

}

dict 的每個key 都要先經過hash生成一段固定長度的hash值,假設生成的hash值如下dict會把這些數字按大小排序好放在一個列表里kd = [53, 67, 81, 99]

當我們想查找"趙六"的信息時, 會把“趙六”先hash, 得到99這個值,然后拿這個值去到kd列表里找,想象這個列表有14億個值 ,如何快速找到99? 二分法就行 ,只要找到了99的位置,就可以定位到趙六對應的value的值了。 通過2分法查找,每次數據量都會少一半,這樣查找最多31次(2**31=2147483648)就能從20億信息里找到這個人的信息。當然 dict 真實的查找算法比這個還要復雜些, 我只是通過這個例子讓大家理解下為何基于hash的數據類型查找速度會快很多。

set去重是因為每存一個值到set里時, 都要先經過hash,然后通過得出的這個hash值算出應該存在set里的哪個位置,存的時候會先檢查那個位置上有沒有值 ,有的話就對比是否相等,如果相等,則不再存儲此值。 如果不相等(即為空),則把新值存在這。

總結

以上是生活随笔為你收集整理的python 长度queue_python:常见的数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。