什么是序列,Python序列詳解(包括序列類型和常用操作)


所謂序列,指的是一塊可存放多個值的連續內存空間,這些值按一定順序排列,可通過每個值所在位置的編號(稱為索引)訪問它們。

為了更形象的認識序列,可以將它看做是一家旅店,那么店中的每個房間就如同序列存儲數據的一個個內存空間,每個房間所特有的房間號就相當於索引值。也就是說,通過房間號(索引)我們可以找到這家旅店(序列)中的每個房間(內存空間)。

在 Python 中,序列類型包括字符串、列表、元組、集合和字典,這些序列支持以下幾種通用的操作,但比較特殊的是,集合和字典不支持索引、切片、相加和相乘操作。直線電機的優缺點

字符串也是一種常見的序列,它也可以直接通過索引訪問字符串內的字符。

序列索引

序列中,每個元素都有屬於自己的編號(索引)。從起始元素開始,索引值從 0 開始遞增,如圖 1 所示。



圖 1 序列索引值示意圖


除此之外,Python 還支持索引值是負數,此類索引是從右向左計數,換句話說,從最后一個元素開始計數,從索引值 -1 開始,如圖 2 所示。



圖 2 負值索引示意圖

注意,在使用負值作為列序中各元素的索引值時,是從 -1 開始,而不是從 0 開始。

無論是采用正索引值,還是負索引值,都可以訪問序列中的任何元素。以字符串為例,訪問“C語言中文網”的首元素和尾元素,可以使用如下的代碼:

  1. str="C語言中文網"
  2. print(str[0],"==",str[-6])
  3. print(str[5],"==",str[-1])

輸出結果為:

C == C
網 == 網

序列切片

切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內的元素,通過切片操作,可以生成一個新的序列。

序列實現切片操作的語法格式如下:

sname[start : end : step]

其中,各個參數的含義分別是:

  • sname:表示序列的名稱;
  • start:表示切片的開始索引位置(包括該位置),此參數也可以不指定,會默認為 0,也就是從序列的開頭進行切片;
  • end:表示切片的結束索引位置(不包括該位置),如果不指定,則默認為序列的長度;
  • step:表示在切片過程中,隔幾個存儲位置(包含當前位置)取一次元素,也就是說,如果 step 的值大於 1,則在進行切片去序列元素時,會“跳躍式”的取元素。如果省略設置 step 的值,則最后一個冒號就可以省略。


例如,對字符串“C語言中文網”進行切片:

  1. str="C語言中文網"
  2. #取索引區間為[0,2]之間(不包括索引2處的字符)的字符串
  3. print(str[:2])
  4. #隔 1 個字符取一個字符,區間是整個字符串
  5. print(str[::2])
  6. #取整個字符串,此時 [] 中只需一個冒號即可
  7. print(str[:])

運行結果為:

C語
C言文
C語言中文網

序列相加

Python 中,支持兩種類型相同的序列使用“+”運算符做相加操作,它會將兩個序列進行連接,但不會去除重復的元素。

這里所說的“類型相同”,指的是“+”運算符的兩側序列要么都是序列類型,要么都是元組類型,要么都是字符串。

例如,前面章節中我們已經實現用“+”運算符連接 2 個(甚至多個)字符串,如下所示:

  1. str="c.biancheng.net"
  2. print("C語言"+"中文網:"+str)

輸出結果為:

C語言中文網:c.biancheng.net

序列相乘

Python 中,使用數字 n 乘以一個序列會生成新的序列,其內容為原來序列被重復 n 次的結果。例如:

  1. str="C語言中文網"
  2. print(str*3)

輸出結果為:

'C語言中文網C語言中文網C語言中文網'


比較特殊的是,列表類型在進行乘法運算時,還可以實現初始化指定長度列表的功能。例如如下的代碼,將創建一個長度為 5 的列表,列表中的每個元素都是 None,表示什么都沒有。

  1. #列表的創建用 [],后續講解列表時會詳細介紹
  2. list = [None]*5
  3. print(list)

輸出結果為:

[None, None, None, None, None]

檢查元素是否包含在序列中

Python 中,可以使用 in 關鍵字檢查某元素是否為序列的成員,其語法格式為:

value in sequence

其中,value 表示要檢查的元素,sequence 表示指定的序列。

例如,檢查字符‘c’是否包含在字符串“c.biancheng.net”中,可以執行如下代碼:

  1. str="c.biancheng.net"
  2. print('c'in str)

運行結果為:

True


和 in 關鍵字用法相同,但功能恰好相反的,還有 not in 關鍵字,它用法檢查某個元素是否不包含在指定的序列中,比如說:

  1. str="c.biancheng.net"
  2. print('c' not in str)

輸出結果為:

False

和序列相關的內置函數

Python提供了幾個內置函數(表 3 所示),可用於實現與序列相關的一些常用操作。

表 3 序列相關的內置函數
函數 功能
len() 計算序列的長度,即返回序列中包含多少個元素。
max() 找出序列中的最大元素。注意,對序列使用 sum() 函數時,做加和操作的必須都是數字,不能是字符或字符串,否則該函數將拋出異常,因為解釋器無法判定是要做連接操作(+ 運算符可以連接兩個序列),還是做加和操作。
min() 找出序列中的最小元素。
list() 將序列轉換為列表。
str() 將序列轉換為字符串。
sum() 計算元素和。
sorted() 對元素進行排序。
reversed() 反向序列中的元素。
enumerate() 將序列組合為一個索引序列,多用在 for 循環中。


這里給大家給幾個例子:

  1. str="c.biancheng.net"
  2. #找出最大的字符
  3. print(max(str))
  4. #找出最小的字符
  5. print(min(str))
  6. #對字符串中的元素進行排序
  7. print(sorted(str))

輸出結果為:

t
.
['.', '.', 'a', 'b', 'c', 'c', 'e', 'e', 'g', 'h', 'i', 'n', 'n', 'n', 't']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM