python教程(四) 序列

2021-09-11 00:24:54 字數 4502 閱讀 6470

距離上次的小專案已經休息了很長一段時間,是時候來繼續本系列教程了。這一節開始我們將深入python中的資料結構。

在python中,最基本的資料結構是序列,序列包含乙個或多個元素,每個元素有乙個序號,也就是元素的位置,也稱為索引。第乙個索引是0,第二個是1,以此類推。

說到這裡,可能大家都想到了列表。確實,python中有好幾種內建(自帶)的序列,列表就是其中一種,當然,元組也是。其他的內建序列型別有字串、位元組串等。

至於字串,它其實就是乙個由許多字元組成的序列,索引0指向第乙個字元,索引1指向第二個字元……

本系列教程主要學習列表元組字串這三種序列,位元組串不詳細討論。

所有的序列型別都有一些共同的操作,這些操作包括:索引分片加法乘法還有檢查某個元素是否包含在序列中。除此以外,python中還有一系列針對序列的內建函式。

索引索引操作其實就是通過索引訪問元素的操作,十分簡單,況且之前也有提過,在這裡直接給出例子:

>>

> s =

'hello'

>>

> s[0]

# 正向索引

'h'>>

> s[-1

]# 反向索引

'o'>>

>

要注意的是,反向索引時,末尾元素的索引應該是-1,而不是-0,因為-0就是0,不然就與首元素索引重合了。

分片索引只可以訪問乙個元素,而分片可以訪問一定區間(範圍)內的元素。分片通過冒號隔開的兩個索引來實現,前乙個索引表示起點(包括起點),後乙個索引包括終點(不包括終點):

>>

> s =

'hello world'

>>

> s[0:

5]'hello'

>>

> lst =[1

,2,3

,4,5

]>>

> lst[1:

-1][

2,3,

4]

省略第乙個索引表示從首元素開始:

>>

> lst =[1

,2,3

,4,5

]>>

> lst[:3

][1,

2,3]

省略第二個索引表示索引的範圍包含起點以及起點之後的所有元素:

>>

> lst =[1

,2,3

,4,5

]>>

> lst[1:

][2,

3,4,

5]>>

> lst[:]

# 兩個索引都省略[1

,2,3

,4,5

]

要注意的是,下面兩種分片並不等價:

>>

> lst[1:

][2,

3,4,

5]>>

> lst[1:

-1][

2,3,

4]

注意:分片操作返回的序列是從原序列複製指定的範圍內的元素而生成的,在新的序列中給元素重新賦值,並不影響原序列。

我們還可以再指定乙個數字來表示步長,具體看下面例子:

>>

> lst =[1

,2,3

,4,5

,6,7

,8,9

,10]>>

> lst[0:

10:2]

[1,3

,5,7

,9]

上面的例子中,從索引0開始,每2個元素就取乙個元素,這個2就是我所說的步長,在之前的例子中,我們的沒有提供步長,這時的步長預設就是1。

當然,步長不可以為0,步長為0將會報錯。但是步長可以是負數!,這時分片從右往左提取元素:

>>

> lst =[1

,2,3

,4,5

,6,7

,8,9

,10]>>

> lst[3:

1:-1

][4,

3]

上面例子中,分片從索引4的元素開始,每一步取乙個元素,直到索引1(不包括該元素)。

使用負數的步長常常會使人困惑,建議如無必要,還是不要使用負數的步長。

加法通過使用加法運算子+,我們可以進行序列的連線操作:

>>

>[1

,2,3

]+[4

,5,6

][1,

2,3,

4,5,

6]>>

>

'hello'

+'world'

'helloworld'

>>

>(1

,2)+

(3,4

)(1,

2,3,

4)

這十分簡單,不過要注意,只有在相同型別的序列之間,才可以進行相加,不然就報錯:

>>

>[1

,2,3

]+'hello'

traceback (most recent call last)

: file ""

, line 1,in

typeerror: can only concatenate list

(not

"str"

) to list

乘法

我們把乙個序列與整數n相乘來生成乙個新的序列,這個新的序列將被重複n次:

>>

>[1

,2,3

]*5[

1,2,

3,1,

2,3,

1,2,

3,1,

2,3,

1,2,

3]>>

>

'hello '*3

'hello hello hello '

成員資格

我們把確認乙個值是否在序列中,稱為檢查這個值在序列中的成員資格。我們可以用運算子in來實現:

>>

> lst =[1

,2,3

,4]>>

>

1in lst

true

>>

>

0in lst

false

字串比較特殊,我們不僅可以檢查某個字元是否在乙個字串中,而且可以檢查某個另乙個字串是否在該字串中:

>>

> s =

'hello world'

>>

>

'w'in s

true

>>

>

'world'

in s

true

操作序列的函式

除了上面的序列操作外,python還提供了一些內建函式用於操作序列,下面介紹最常用的len、min、max函式。

使用len函式可以得到序列的長度,也就是序列中元素的數量:

>>

> lst =[1

,2,3

]>>

>

len(lst)

3>>

> s =

'hello'

>>

>

len(s)

5

min和max函式分別返回序列中的最小和最大的元素:

>>

> lst =[1

,2,3

,4,5

]>>

>

min(lst)

1>>

>

max(

'hello world'

)'w'

min和max函式的引數還可以是多個引數:

>>

>

max(3,

2,4,

2,5)

5>>

>

min(3,

2,4,

2,5)

2

這個時候相當於全部引數被收集成乙個列表,再從中求出最大或最小的元素

本節到此為止,讀者們好好消化,我們下期再見!

Python基礎 (四)序列2

集合dict b dict name wwy age 18,job student c dict name wwy age 18 job student a zip d name age job e wwy 18,student f dist zip d,e f fromkeys g dict.fr...

python核心程式設計四 序列 字串,列表,元組

1.序列成員關係操作符 in,not in 2.序列型別操作符 序列操作符 作用 seq ind 獲得下標為ind 的元素 seq ind1 ind2 獲得下標從ind1 到ind2 間的元素集合 seq expr序列重複expr 次 seq1 seq2連線序列seq1 和seq2 obj in s...

資料結構(四) 串

串 string 是由零個或多個字元構成的有限序列,又叫字串 空格串 只包含空格的串 空串 零個字元的串 串的大小比較 對於數字來說,1與2 誰大誰小不用討論,但是 兩個字串怎麼比較大小呢?計算機的常用字元是使用標準的ascii編碼。所以我們字串的比較就是逐個的比較ascii值的大小 串的一些操作函...