Python官方教程閱讀總結(jié)-數(shù)據(jù)結(jié)構(gòu)

Python中常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)有l(wèi)ist, tuple,dictionary, set

  1. list
    前面的文章中介紹過(guò)list, 這里再詳細(xì)的介紹一下list對(duì)象中的方法

1.1 list.append(x)
在列表的末尾添加一個(gè)元素樟蠕,只能添加一個(gè)。如果 a 是一個(gè)列表鹅士,則 a.append(x)等同于 a[len(a):] = [x]

1.2 list.extend(iterable)
把可迭代對(duì)象中的所有元素添加到原列表的末尾管削,等同于a[len(a):] = iterable

1.3 list.insert(i,x)
在列表指定位置添加一個(gè)元素心俗,i是索引編號(hào)井仰, x 是要添加的元素峰尝,當(dāng) i = len(a)的時(shí)候儒旬,該 方法的功能等同于append()

1.4 list.remove(x)
把列表中的第一次出現(xiàn)的x元素從列表中移除温兼,如果沒(méi)有此元素則會(huì)報(bào)錯(cuò),如果有多個(gè)相同的x元素秸滴,只會(huì)移除第一個(gè)

1.5 list.pop([i])
把列表中索引為i的元素移除,如果沒(méi)有此索引募判,則會(huì)報(bào)錯(cuò)荡含,如果沒(méi)有提供索引,則會(huì)默認(rèn)移除列表中的最后一個(gè)元素届垫。該方法中释液,參數(shù)[i]中的中括號(hào)代表該參數(shù)是可選參數(shù)

1.6 list.clear()
清空列表,清空后的列表對(duì)象仍然存在,只不過(guò)是一個(gè)空列表

1.7 list.index(x [, start [, end] ])
返回第一個(gè)x元素的索引装处,如果沒(méi)有該元素误债,則報(bào)錯(cuò)。注意妄迁,只返回第一個(gè)寝蹈,可選參數(shù),start, end用來(lái)限定列表的搜索范圍

1.8 list.count(x)
返回元素 x 在列表中出現(xiàn)的次數(shù)

1.9 list.sort( key = None, reverse = False)
對(duì)列表中的元素進(jìn)行排序登淘,默認(rèn)是升序箫老,即從小到大

1.10 list.reverse()
把列表倒置,即第一個(gè)元素變?yōu)樽詈笠粋€(gè)元素地来,以此類推

1.11 list.copy()
返回list的一個(gè)淺拷貝史煎,關(guān)于淺拷貝與深拷貝的區(qū)別碉钠,請(qǐng)參見(jiàn)https://www.cnblogs.com/xueli/p/4952063.html

1.12 用list 實(shí)現(xiàn)堆
堆具有后進(jìn)先出(先進(jìn)后出)的特點(diǎn),append() 方法添加一個(gè)元素到堆末牲蜀, pop() 方法把堆末的元素移除,所以列表用append() 和 pop() 方法輕松實(shí)現(xiàn) 堆的功能

1.13 用list實(shí)現(xiàn)隊(duì)列
隊(duì)列具有先進(jìn)先出的特點(diǎn)绅这,同樣也可以用append() 和 pop() 方法實(shí)現(xiàn)隊(duì)列的功能涣达,但這樣的效率不高,python中君躺, collections.deque 是列高效得實(shí)現(xiàn)隊(duì)列的方法峭判,應(yīng)用到的主要方法是queue = deque(list), append(), 和 leftpop()方法

1.14 列表推導(dǎo)式(list comprehensions)
列表推導(dǎo)式是一種更簡(jiǎn)潔得創(chuàng)建列表的方法,多用于從一個(gè)序列或可迭代對(duì)象中經(jīng)過(guò)某些操作創(chuàng)造一個(gè)列表棕叫,例如創(chuàng)建一個(gè)1-10之間每個(gè)數(shù)的平方組成的列表:
傳統(tǒng)方法:


list1.png

用列表推導(dǎo)式的方法:


list2.png

1.15 嵌套的列表推導(dǎo)式
嵌套列表就是一個(gè)列表中的每個(gè)元素仍然是列表林螃,如下:
matrix = [
[1, 2, 3, 4],
. [5, 6, 7, 8],
[9, 10, 11, 12],
]
嵌套的列表推導(dǎo)式就是用兩重或多重的推導(dǎo)式來(lái)創(chuàng)建一個(gè)列表,如把上述的列表轉(zhuǎn)置變成
matrix2 = [
[1, 5, 9],
[2, 6, 10],
[3, 7, 11],
[4, 8, 12]
]
可以用如下列表推導(dǎo)式:
[ [ row[i] for row in matrix ] for i in range(4) ]

列表推導(dǎo)式有更多花樣的用法俺泣,以后的實(shí)踐中會(huì)逐漸發(fā)現(xiàn)python中用推導(dǎo)式的簡(jiǎn)潔

  1. del 聲明
    del 聲明可以用來(lái)刪除指定的元素
    a = [1,2,3,4,5]
    del a[0] #刪除列表的第一個(gè)元素
    del a[1:3] #刪除列表切片中的元素
    del a[:] # 刪除列表中的全部元素疗认,相當(dāng) 于 a.clear()完残, 列表仍存在,但是空列表
    del a # 刪除列表a, 與del a[:]的區(qū)別是横漏,變量a也會(huì)沒(méi)有
  1. 元組
    3.1 幾個(gè)逗號(hào)分隔的值組成的元素是元組谨设。例如:
    t = 123, 456, 'hello'

3.2 元組和列表類似,也可嵌套缎浇,也有索引扎拣,但一個(gè)顯著的差別是元組是不可變的,例如:
t[0] = 321 就會(huì)報(bào)錯(cuò)
元組雖然不可變素跺,但是元組中的元素可以是可變對(duì)象二蓝,例如由列表組成的元組:
t2 = ([1,2,3], [4,5,6])

3.3 空元組和只含有一個(gè)元素的元組
t3 = () # 空元組
t4 = (123, ) # 只含有一個(gè)元素的元組,用逗號(hào)隔開(kāi)

3.4 元組的分解
如果說(shuō) t = 123,456, 'hello' 是一個(gè)打包的過(guò)程指厌,那么相反的過(guò)程就是:
x, y, t = t
這種分解方法適用于所有序列的分解刊愚,需要注意的是要保存等號(hào)兩邊的元素?cái)?shù)量相等
多重賦值,a, b = 1, 2 也是利用了tuple的生成和分解

  1. 集合(set)
    由不重復(fù)的元素組成的無(wú)序序列就是集合
    集合的創(chuàng)建:
    (1) set() 方法
    (2) 通過(guò) { } 來(lái)創(chuàng)建踩验,創(chuàng)建0元素集合只能用 set() 方法
    s1 = {'a', 'b', 'c'} s2 = {'c', 'd', 'e'}
    集合也以進(jìn)行合集鸥诽,差集,補(bǔ)集箕憾,交集等數(shù)學(xué)運(yùn)算
    s1 & s2 # 交集
    s1 | s2 # 合集
    s1 - s2 # 差集
    s1 ^ s2 # 交集取反

集合也可以利用推導(dǎo)式:
a = {x for x in s1 if x not in s2}

  1. 字典(dictionary)
    5.1 字典是由鍵值對(duì)為元素組成的一種數(shù)據(jù)結(jié)構(gòu)牡借,字典的鍵是不可變的數(shù)據(jù)結(jié)構(gòu),通常是用數(shù)字厕九,字符串或元組來(lái)作為字典的鍵蓖捶,列表不能作為字典的鍵,因?yàn)榱斜硎强勺兊?/li>

5.2 創(chuàng)建字典的方式:(1)通過(guò){ }來(lái)創(chuàng)建 (2)通過(guò)dict() 方法來(lái)創(chuàng)建

5.3 del 可以刪除字典的元素扁远,如:
dic = { 1: 'hello', 2: 'world' }
del dic[1]

5.4 list(dic) 可以返回一個(gè)由字典中的所有鍵組成的列表

5.5 推導(dǎo)式來(lái)創(chuàng)建字典
{x: x **2 for x in range(1:5)}

5.6 當(dāng)關(guān)鍵字是簡(jiǎn)單字符串時(shí)俊鱼,直接用關(guān)鍵字參數(shù)來(lái)生成字典
dict(a = 1, b = 2)

  1. 循環(huán)的技巧
    6.1 字典中的循環(huán)
    dic = { 1: 'hello', 2: 'world' }
    for k, v in dic:
    print(k,v)

6.2 序列循環(huán)中,使用enumerate() 方法把序列的值及其索引一并取出
for i, v in enumerate(['a', 'b', 'c']):
print(v)

6.3 循環(huán)多個(gè)序列時(shí)畅买,使用zip() 函數(shù)把多個(gè)序列中的元素一一對(duì)應(yīng)取出:
for v1,v2 in zip(list1, list2):
print(v1, v2)

6.4 對(duì)一個(gè)序列進(jìn)行操作后再循環(huán)并闲,可以利用python內(nèi)置函數(shù),如:
reversed() # 倒序一個(gè)序列
sorted() # 排序一個(gè)序列

  1. 比較操作符
    7.1 比較操作可以傳遞
    a < b == c # a <b 并且」刃摺b=c

7.2 not 是取反操作

7.3 比較操作符可有優(yōu)先級(jí)
優(yōu)先級(jí)順序:not and, or

  1. 序列比較
    序列對(duì)象與相同類型的其它對(duì)象進(jìn)行比較帝火,先比較第一個(gè)元素,相同的話再比較下一個(gè)元素湃缎,直到分出大小或其中一個(gè)序列耗盡犀填。兩上序列中的每一個(gè)元素都相等,則認(rèn)為兩個(gè)序列相等嗓违。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末九巡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蹂季,更是在濱河造成了極大的恐慌冕广,老刑警劉巖疏日,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異撒汉,居然都是意外死亡沟优,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門睬辐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挠阁,“玉大人,你說(shuō)我怎么就攤上這事溉委【槲ǎ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵瓣喊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我黔酥,道長(zhǎng)藻三,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任跪者,我火速辦了婚禮棵帽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渣玲。我一直安慰自己逗概,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布忘衍。 她就那樣靜靜地躺著逾苫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枚钓。 梳的紋絲不亂的頭發(fā)上铅搓,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音搀捷,去河邊找鬼星掰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫩舟,可吹牛的內(nèi)容都是我干的氢烘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼家厌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼播玖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起像街,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黎棠,失蹤者是張志新(化名)和其女友劉穎晋渺,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脓斩,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡木西,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了随静。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片八千。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖燎猛,靈堂內(nèi)的尸體忽然破棺而出恋捆,到底是詐尸還是另有隱情,我是刑警寧澤重绷,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布沸停,位于F島的核電站,受9級(jí)特大地震影響昭卓,放射性物質(zhì)發(fā)生泄漏愤钾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一候醒、第九天 我趴在偏房一處隱蔽的房頂上張望能颁。 院中可真熱鬧,春花似錦倒淫、人聲如沸伙菊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)镜硕。三九已至,卻和暖如春纯赎,著一層夾襖步出監(jiān)牢的瞬間谦疾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工犬金, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留念恍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓晚顷,卻偏偏與公主長(zhǎng)得像峰伙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子该默,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容