python資料結構講解 python資料結構詳解

2021-10-11 05:13:22 字數 3449 閱讀 5784

python中常見的資料結構可以統稱為容器(container)。序列(如列表和元組)、對映(如字典)以及集合(set)是三類主要的容器。

一、序列(列表、元組和字串)

序列中的每個元素都有自己的編號。python中有6種內建的序列。其中列表和元組是最常見的型別。其他包括字串、unicode字串、buffer物件和xrange物件。下面重點介紹下列表、元組和字串。

1、通用序列操作:

從列表、元組以及字串可以「抽象」出序列的一些公共通用方法(不是你想像中的crud),這些操作包括:索引(indexing)、分片 (sliceing)、加(adding)、乘(multiplying)以及檢查某個元素是否屬於序列的成員。除此之外,還有計算序列長度、最大最小元 素等內建函式

1)索引:

1 str1='hello'

2 nums=[1,2,3,4]3 t1=(123,234,345)4 printstr1[0]5 print nums[1]6 print t1[2]

輸出:h

2)分片:

分片操作用來訪問一定範圍內的元素。分片通過冒號相隔的兩個索引來實現:

1 nums=range(10)2 printnums3 print nums[1:5]4 print nums[6:10]5 print nums[1:]6 print nums[-3:-1]7 print nums[-3:] #包括序列結尾的元素,置空最後乙個索引

8 print nums[:] #複製整個序列

輸出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4]

[6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

[7, 8]

[7, 8, 9]

不同的步長,有不同的輸出:

1 nums=range(10)2 printnums3 print nums[0:10] #預設步長為1 等價於nums[1:5:1]

4 print nums[0:10:2] #步長為2

5 print nums[0:10:3] #步長為3

6 ##print nums[0:10:0] #步長為0

7 print nums[0:10:-2] #步長為-2

輸出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[0, 2, 4, 6, 8]

[0, 3, 6, 9]

3)序列相加:

兩種相同型別的序列才可以相加;

1 str1='hello'

2 str2='world'

3 print str1+str24 num1=[1,2,3]5 num2=[2,3,4]6 print num1+num27 print str1+num1

輸出:hello world

[1, 2, 3, 2, 3, 4]

traceback (most recent call last):

file 「f:\python\test.py」, line 7, in

print str1+num1

typeerror: cannot concatenate 『str』 and 『list』 objects

4)乘法:

1 print [none]*10

2 str1='hello'

3 print str1*2

4 num1=[1,2]5 print num1*2

6 print str1*num1

輸出:[none, none, none, none, none, none, none, none, none, none]

hellohello

[1, 2, 1, 2]

traceback (most recent call last):

file 「f:\python\test.py」, line 5, in

print str1*num1

typeerror: can』t multiply sequence by non-int of type 『list』

5)成員資格:

in運算子會用來檢查乙個物件是否為某個序列(或者其他型別)的成員(即元素):

1 str1='hello'

2 print 'h' instr13 print 'h' instr14 num1=[1,2]5 print 1 in num1

輸出:false

true

true

6)長度、最小值和最大值:

1 str1='hello'

2 printlen(str1)3 printmax(str1)4 printmin(str1)5 num1=[1,2,1,4,123]6 printlen(num1)7 printmax(num1)8 print min(num1)

輸出:o

h2、列表

列表是可變的,這是它區別於字串和元組的最重要的特點,一句話概括即:列表可以修改,而字串和元組不能。

1 list1=['hello','world']2 printlist13 list2=[1,2,3]4 print list2

輸出:[『hello』, 『world』]

[1, 2, 3]

1)list函式:

通過list函式(其實list是一種型別而不是函式)對字串建立列表非常有效:

1 list3=list("hello")2 print list3

輸出:[『h』, 『e』, 『l』, 『l』, 『o』]

join函式:

實現將由字元組成的列表轉換為字串;

1 somelist = ['a','b','c']2 list1 =``.join(somelist)3 print list

輸出:'abc'

2)基本列表操作:

元素賦值:

1 x = [1,1,1]2 x[1] = 2

3 print x

輸出:[1,2,1]

刪除元素:

1 list1 = ['h','e','l','l','o']2 del list1[1]3 print list1

輸出:['h','l','l','o']

分片賦值:

1 name = list('perl')2 name[1:] = list('ython')3 print name

輸出:['p','y','t','h','o','n']

3)列表方法:

在列表末尾追加新的物件;

輸出:[1,2,3,5]

count方法:

統計某個元素在列表**現的次數;

result = ['to','be','or','not','to','be']print result.count('to')

輸出:extend方法:

extend方法會改變原來的列表,連線操作(『+』)不會改變原來的列表;

python資料結構 棧講解

應用實戰 棧有時也稱作下堆疊,是乙個有序集合,以列表的形式,但是他的新增和移除操作總是發生在同一端,被稱為頂端,也叫做棧頂,另一端被稱為低端,也叫棧底。可以理解為在桌子上疊放書本,我們放上去之後如果拿的話也是從上往下拿,放的話則是從下往上,我們往往取的都是放的時間最晚的,就是這個原理。棧的操作型別有...

資料結構 棧講解

棧的基本原理 知識講解 棧也是一種操作 或者說運算 受到限制的特殊線性表。其插入進棧和刪除操作都限制在表的一端進行,這一端被稱為 棧頂 top 相對a的另一端稱為 棧 bottom 插入操作一般稱之為 進棧 push 或者 壓棧 刪除操作稱之為 出棧 pop 棧的特點是 先進後出 fifo,firs...

資料結構 佇列講解

佇列知識講解 佇列是一種操作 或者說運算 受到限制的特殊線性表。其插入操作 限定在表的一端進行,稱為 入隊 其刪除操作則限定在表的另一端進隊尾行,稱為 出隊 插入一端稱為隊尾 rear 刪除一端稱為隊頭 ront 假設有佇列q a1,a2,a3,an 則佇列q中的元素是按a1,a2,a3,an的順序...