1)把鍊錶當作堆疊使用
#pop():刪除末尾元素
2)把鍊錶當作佇列使用
#要實現佇列,使用 collections.deque,它為在首尾兩端快速插入和刪除而設計
from collections import deque
queue = deque(['eric', 'john', 'michael'])
queue.popleft() #左刪
queue.pop() #右刪
鍊錶可以用索引、切割或者
和extend()
等方法改變
3)函式式程式設計工具
鍊錶中,三個內建函式非常有用:filter()、map()、reduce()
filter(function,
sequence)返回乙個 sequence(序列),包括了給定序列中所有呼叫function(item)
後返回值為 true 的元素(如果可能的話,會返回相同的型別)。如果該
序列(sequence)是乙個
str,
unicode
或者 tuple
,返回值必定是同一型別,否則,它總是
list
。
>>> def f(x): return x % 3 == 0 or x % 5 == 0
...>>> filter(f, range(2, 25))
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]
map(function,
sequence)
為每乙個元素依次呼叫function(item)
並將返回值組成乙個鍊錶返回。(
可以傳入多個序列,函式也必須要有對應數量的引數,執行時會依次用各序列上對應的元素來呼叫函式(如果某些序列比其它的短,就用none
來代替)。如果把none
做為乙個函式傳入,則直接返回引數做為替代。)
reduce(function,
sequence)返回乙個單值,它是這樣構造的:首先以序列的前兩個元素呼叫函式
function
,(可以傳入第三個引數作為初始值。)
4)列表解析/列表推導式
源自集合的概念。對序列中的每一項執行乙個表示式來建立乙個新列表。每次乙個,從左至右。
編寫在方括號中,並且有使用了同乙個變數名的表示式和迴圈結構組成。
它建立了新的列表作為結果,但是能夠在任何可迭代的物件上進行迭代。
它能在python的任何序列型別中發揮作用。
在python3.0中,列表、集合、字典 都可以用來解析和建立。
它的結構是在乙個中括號裡包含乙個表示式,然後是乙個
for語句,然後是0個或多個
for或者
if語句。那個表示式可以是任意的,意思是你可以在列表中放入任意型別的物件。返回結果將是乙個新的列表,在這個以if和
for語句為上下文的表示式執行完成之後產生。
巢狀的列表推導式是對
for後面的內容進行求值。
5)元組
元組是
不可變的
,通常包含不同種類的元素並通過分拆(參閱本節後面的內容)或索引訪問(如果是
namedtuples
,甚至可以通過屬性)。列表是
可變的,它們的元素通常是相同的型別並通過迭代訪問。
6)集合
注意:想要建立空集合,你必須使用set()
而不是{}
。
建立字典的方式:
1)>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
2)>>>
3)>>> dict(sape=4139, guido=4127, jack=4098)
sorted()
函式,它不改動原序列,而是生成乙個新的已排序的序列
python資料結構
資料結構是一種結構,它們用以把一些資料儲存在一起。在python中有三種內建的資料結構 列表 list 元組 tuple 字典 dictionary 列表由一對方括號括起來,其中的專案之間以逗號分隔。你可以在列表中增加 刪除 查尋專案。示例如下 python using list.py 這兒有 4 ...
python 資料結構
刪除元素 remove,pop,del set是乙個無序的,不重複的元素集合 set中每個元素都是可雜湊的,但是set不是可雜湊的。相對應的frozenset,可hash,可以作為keys存在於dict中 支援 x in set,len set for x in set,不支援slice等序列操作 ...
python 資料結構
變數是只不過保留的記憶體位置用來儲存值。這意味著,當建立乙個變數,那麼它在記憶體中保留一些空間a abc 1.在記憶體中建立了乙個 abc 的字串 2.在記憶體中建立了乙個名為a的變數,並把它指向 abc a abc b a a xyz a abc 直譯器建立了字串 abc 和變數a,並把a指向 a...