通常來說Python中任何值都是一個對象,因此任何類型(int、str、list…)都是一個類。而類就必然有它的方法或?qū)傩裕覀円浵逻@么多類的所有方法顯然是不可能的,對此本文介紹兩個小技巧:
dir() :內(nèi)置函數(shù),用來查詢一個類或者對象所有屬性,比如>>> dir(list)。
help() :內(nèi)置函數(shù),用來查詢具體的說明文檔,比如>>> help(int)。
在上一篇的Python3的基本數(shù)據(jù)類型中,我們初步了解了list列表,也介紹了列表是Python 中使用最頻繁的數(shù)據(jù)類型。本文將進(jìn)一步深入學(xué)習(xí)列表的使用。
一、列表的方法:
list.append(x)
在列表的尾部添加一個項(xiàng),等價于 a[len(a):] = [x]。
list.extend(L)
將給定的列表L接到當(dāng)前列表后面,等價于 a[len(a):] = L。
list.insert(i, x)
在給定的位置 i 前插入項(xiàng),例如:a.insert(0, x) 會在列表的頭部插入,而 a.insert(len(a), x) 則等價于 a.append(x)。
list.remove(x)
移除列表中第一個值為 x 的項(xiàng),沒有的話會產(chǎn)生一個錯誤。
list.pop([i])
刪除列表給定位置的項(xiàng),并返回它。如果沒指定索引,a.pop()移除并返回列表最后一項(xiàng)。(方括號表示可選)
list.clear()
刪除列表中的所有項(xiàng),相當(dāng)于 del a[:]。
list.index(x)
返回列表中第一個值為 x 的項(xiàng)的索引。如果沒有匹配的項(xiàng), 則產(chǎn)生一個錯誤。
list.count(x)
返回列表中 x 出現(xiàn)的次數(shù)。
list.sort()
就地完成列表排序。
list.reverse()
就地完成列表項(xiàng)的翻轉(zhuǎn)。
list.copy()
返回列表的一個淺拷貝,相當(dāng)于a[:]。
二、列表當(dāng)棧
List的方法使得其可以很方便地作為一個棧來使用。我們知道,棧的特點(diǎn)是最后進(jìn)入的元素最先出來(即后入先出),用append()方法進(jìn)行壓棧,用不指定索引的pop()方法進(jìn)行出棧。
示例代碼如下:
stack = []for x in range(1,6): stack.append(x) # 入棧 print('push', x, end=' ') print(stack)print('Now stack is', stack)while len(stack)>0: print('pop', stack.pop(), end=' ') # 出棧 print(stack)
三、列表當(dāng)隊(duì)列
列表還可以當(dāng)作隊(duì)列來使用,隊(duì)列的特性是第一個加入的元素第一個取出來(即先入先出)。然而,把列表當(dāng)隊(duì)列使用效率并不高,因?yàn)閺牧斜淼奈膊刻砑雍蛷棾鲈厥呛芸斓模诹斜淼拈_頭插入或彈出是比較慢的(因?yàn)樗性囟嫉靡苿右粋€位置)。
要實(shí)現(xiàn)一個隊(duì)列, 使用標(biāo)準(zhǔn)庫的collections.deque, 它被設(shè)計(jì)成在兩端添加和彈出都很快。
示例代碼如下:
from collections import dequequeue = deque() # 創(chuàng)建空隊(duì)列for x in range(1,6): queue.append(x) # 入隊(duì) print('push', x, end=' ') print(list(queue))print('Now queue is', list(queue))while len(queue)>0: print('pop', queue.popleft(), end=' ') # 出隊(duì) print(list(queue))
新聞熱點(diǎn)
疑難解答
圖片精選