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

歡迎訪問 生活随笔!

生活随笔

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

python

【Python基础】盘点 Python 10 大常用数据结构(上篇)

發布時間:2025/3/8 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础】盘点 Python 10 大常用数据结构(上篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我的施工之路

上圖施工計劃,已完成專題:

1我的施工計劃

2數字專題

3字符串專題

4列表專題

5流程控制專題

6編程風格專題

7函數使用

8.面向對象編程(上篇)

9.面向對象編程(下篇)

Python 常用數據結構

學習目的

這個專題,盡量使用最精簡的文字,借助典型案例盤點Python常用的數據結構。

如果你還處于Python入門階段,通常只需掌握list、tuple、set、dict這類數據結構,做到靈活使用即可。

然而,隨著學習的深入,平時遇到實際場景變復雜,很有必要去了解Python內置的更加強大的數據結構deque、heapq、Counter、OrderedDict、defaultDict、ChainMap,掌握它們,往往能讓你少寫一些代碼且能更加高效的實現功能。

學習目標

學習數據結構第一階段:掌握它們的基本用法,使用它們解決一些基本問題;

學習第二階段:知道何種場景選用哪種最恰當的數據結構,去解決題問題;

學習第三階段:了解內置數據結構的背后源碼實現,與《算法和數據結構》這門學問里的知識聯系起來,打通任督二脈。

下面根據定義的這三個階段,總結以下10種最常用的數據結構:

1 list

基本用法 廢話不多說,在前面單獨有一個專題詳述了list的使用列表專題

使用場景 list 使用在需要查詢、修改的場景,極不擅長需要頻繁插入、刪除元素的場景。

實現原理 list對應數據結構的線性表,列表長度在初始狀態時無需指定,當插入元素超過初始長度后再啟動動態擴容,刪除時尤其位于列表開始處元素,時間復雜度為O(n)

2 tuple

元組是一類不允許添加刪除元素的特殊列表,也就是一旦創建后續決不允許增加、刪除、修改。

基本用法 元組大量使用在打包和解包處,如函數有多個返回值時打包為一個元組,賦值到等號左側變量時解包。

In?[22]:?t=1,2,3????????????????????????????????????????? In?[23]:?type(t)?????????????????????????????? Out[23]:?tuple

實際創建一個元組實例

使用場景 如果非常確定你的對象后面不會被修改,則可以大膽使用元組。為什么?因為相比于list, tuple實例更加節省內存,這點尤其重要。

In?[24]:?from?sys?import?getsizeof??????????????????????????????????????????????In?[25]:?getsizeof(list())?????????????????????????????????????????????????????? Out[25]:?72?#?一個list實例占用72個字節In?[26]:?getsizeof(tuple())????????????????????????????????????????????????????? Out[26]:?56?#?一個tuple實例占用56個字節

所以創建100個實例,tuple能節省1K多字節。

3 set

基本用法 set是一種里面不能含有重復元素的數據結構,這種特性天然的使用于列表的去重。

In?[27]:?a=[3,2,5,2,5,3]????????????????????????????????????????????????????????In?[28]:?set(a)????????????????????????????????????????????????????????????????? Out[28]:?{2,?3,?5}

除此之外,還有知道set結構可用于兩個set實例的求交集、并集、差集等操作。

In?[29]:?a?=?{2,3,5}????????????????????????????????????????????????????????????In?[30]:?b?=?{3,4,6,2}??????????????????????????????????????????????????????????In?[31]:?a.interp(b)?#?求交集?????????????????????????????????????????????????????? Out[31]:?{2,?3}

使用場景 如果只是想緩存某些元素值,且要求元素值不能重復時,適合選用此結構。并且set內允許增刪元素,且效率很高。

實現原理 set在內部將值哈希為索引,然后按照索引去獲取數據,因此刪除、增加、查詢元素效果都很高。

4 dict

基本用法 dict 是Python中使用最頻繁的數據結構之一,字典創建由通過dict函數、{}寫法、字典生成式等,增刪查元素效率都很高。

d?=?{'a':1,'b':2}?#?{}創建字典#?列表生成式 In?[38]:?d?=?{a:b?for?a,b?in?zip(['a','b'],[1,2])}?????????????????????????????? In?[39]:?d?????????????????????????????????????????????????????????????????????? Out[39]:?{'a':?1,?'b':?2}

使用場景 字典尤其適合在查詢多的場景,時間復雜度為O(1). 如leetcode第一題求解兩數之和時,就會使用到dict的O(1)查詢時間復雜度。

同時,Python類中屬性值等信息也都是緩存在__dict__這個字典型數據結構中。

但是值得注意,dict占用字節數是list、tuple的3、4倍,因此對內存要求苛刻的場景要慎重考慮。

In?[40]:?getsizeof(dict())?????????????????????????????????????????????????????? Out[40]:?248

實現原理 字典是一種哈希表,同時保存了鍵值對。

以上4種數據結構相信大家都已經比較熟悉,因此我言簡意賅的介紹一遍。接下來再詳細的介紹下面6種數據結構及各自使用場景,會列舉更多的例子。

5 deque

6 Counter

7 OrderedDict

8 heapq

9 defaultdict

10 ChainMap

雖然每天下班回來很累了,我依然要求自己盡量別到處轉載、到處去網上找熱點。

為什么呢?

一是近三年來養成的總結習慣依然驅動我去多寫原創;

二來個人認為:原創代表一種態度、一種真誠,一種對初心的堅守。

當然最后也是最重要的,還有大家的期待和等候,如果你們再多多支持原創,整個三連就更好了,這是對我的一個最積極的反饋。

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):

總結

以上是生活随笔為你收集整理的【Python基础】盘点 Python 10 大常用数据结构(上篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

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