成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點 Python 10 大常用數據結構(上篇)

開發(fā) 后端
如果你還處于Python入門階段,通常只需掌握list、tuple、set、dict這類數據結構,做到靈活使用即可。這個專題,盡量使用最精簡的文字,借助典型案例盤點Python常用的數據結構。

Python 常用數據結構學習目的

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

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

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

 

我的施工之路

學習目標

  • 學習數據結構第一階段:掌握它們的基本用法,使用它們解決一些基本問題;
  • 學習第二階段:知道何種場景選用哪種最恰當的數據結構,去解決題問題;
  • 學習第三階段:了解內置數據結構的背后源碼實現,與《算法和數據結構》這門學問里的知識聯(lián)系起來,打通任督二脈。

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

1. list

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

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

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

2. tuple

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

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

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

實際創(chuàng)建一個元組實例

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

  1. In [24]: from sys import getsizeof                                               
  2.  
  3. In [25]: getsizeof(list())                                                       
  4. Out[25]: 72 # 一個list實例占用72個字節(jié) 
  5.  
  6. In [26]: getsizeof(tuple())                                                      
  7. Out[26]: 56 # 一個tuple實例占用56個字節(jié) 

所以創(chuàng)建100個實例,tuple能節(jié)省1K多字節(jié)。

3. set

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

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

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

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

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

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

4. dict

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

  1. d = {'a':1,'b':2} # {}創(chuàng)建字典 
  2.  
  3. # 列表生成式 
  4. In [38]: d = {a:b for a,b in zip(['a','b'],[1,2])}                               
  5. In [39]: d                                                                       
  6. Out[39]: {'a': 1, 'b': 2} 

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

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

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

  1. In [40]: getsizeof(dict())                                                       
  2. Out[40]: 248 

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

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

  • 5.  deque
  • 6.  Counter
  • 7.  OrderedDict
  • 8. heapq
  • 9. defaultdict
  • 10. ChainMap

 

責任編輯:趙寧寧 來源: Python與算法社區(qū)
相關推薦

2020-08-02 23:13:29

python開發(fā)數據結構

2012-04-28 14:21:47

Java數據結構線性結構

2011-03-30 09:07:46

數據庫

2021-04-12 10:02:02

JavaList集合

2011-05-23 17:11:54

云端數據遷移

2014-07-01 15:49:33

數據結構

2025-04-07 08:21:49

2023-04-27 09:13:20

排序算法數據結構

2017-03-15 14:20:46

2021-07-16 07:57:34

Python數據結構

2019-04-14 22:22:28

Python數據結構算法

2019-09-18 08:31:47

數據結構設計

2017-03-14 13:39:08

2017-12-20 09:25:45

2017-08-03 11:11:05

2018-08-02 14:56:19

2023-10-31 08:51:25

數據結構存儲數據

2023-09-21 16:13:20

Python數據結構

2021-07-13 07:52:03

Python數據結構

2021-07-15 06:43:12

Python數據結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久 | 日本久草 | 亚洲一区二区三区免费在线观看 | 日韩欧美国产成人一区二区 | 国产色网 | 日韩男人天堂 | 亚洲国产欧美国产综合一区 | 色秀网站 | 日本一区二区三区四区 | 国产区在线 | 日韩一区二区三区四区五区六区 | 欧美日韩综合 | 免费在线观看av网站 | 日韩色视频 | 国产aⅴ爽av久久久久久久 | 91免费看片 | 性高湖久久久久久久久aaaaa | 午夜成人免费视频 | 欧美亚洲综合久久 | 日韩欧美在线观看视频 | 国产精品99久久久久久宅男 | 在线观看成人小视频 | 一级毛片视频免费观看 | 超碰在线免费 | 成人毛片网 | 国产免费观看一级国产 | 国产精品99久久免费观看 | 国产精品久久久久久二区 | 日日干夜夜操 | 日韩欧美大片在线观看 | 亚洲精品视频免费观看 | av毛片| 亚洲成人黄色 | 精品欧美二区 | 日日骚网| 欧美国产日本一区 | 一区二区三区视频在线 | 久久久国产精品 | 色综合一区二区三区 | 亚洲经典一区 | 黄色一级大片在线免费看产 |