第三次
什麼是序列,Python序列詳解
所謂序列,指的是一塊可存放多個值的連續記憶體空間,這些值按一定順序排列,可通過每個值所在位置的編號(稱為索引)訪問它們。
為了更形象的認識序列,可以將它看做是一家旅店,那麼店中的每個房間就如同序列儲存資料的一個個記憶體空間,每個房間所特有的房間號就相當於索引值。也就是說,通過房間號(索引)我們可以找到這家旅店(序列)中的每個房間(記憶體空間)。
在 Python 中,序列型別包括字串、列表、元組、集合和字典,這些序列支援以下幾種通用的操作,但比較特殊的是,集合和字典不支援索引、切片、相加和相乘操作。
字串也是一種常見的序列,它也可以直接通過索引訪問字串內的字元。
序列索引
序列中,每個元素都有屬於自己的編號(索引)。從起始元素開始,索引值從 0 開始遞增,如圖 1 所示。

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

圖 2 負值索引示意圖
注意,在使用負值作為列序中各元素的索引值時,是從 -1 開始,而不是從 0 開始。
無論是採用正索引值,還是負索引值,都可以訪問序列中的任何元素。以字串為例,訪問“C語言中文網”的首元素和尾元素,可以使用如下的程式碼:
str=“C語言中文網”
print(str[0],"",str[-6])
print(str[5],"",str[-1])
輸出結果為:
C == C
網 == 網
序列切片
切片操作是訪問序列中元素的另一種方法,它可以訪問一定範圍內的元素,通過切片操作,可以生成一個新的序列。
序列實現切片操作的語法格式如下:
sname[start : end : step]
其中,各個引數的含義分別是:
sname:表示序列的名稱;
start:表示切片的開始索引位置(包括該位置),此引數也可以不指定,會預設為 0,也就是從序列的開頭進行切片;
end:表示切片的結束索引位置(不包括該位置),如果不指定,則預設為序列的長度;
step:表示在切片過程中,隔幾個儲存位置(包含當前位置)取一次元素,也就是說,如果 step 的值大於 1,則在進行切片去序列元素時,會“跳躍式”的取元素。如果省略設定 step 的值,則最後一個冒號就可以省略。
例如,對字串“C語言中文網”進行切片:
str=“C語言中文網”
#取索引區間為[0,2]之間(不包括索引2處的字元)的字串
print(str[:2])
#隔 1 個字元取一個字元,區間是整個字串
print(str[::2])
#取整個字串,此時 [] 中只需一個冒號即可
print(str[:])
執行結果為:
C語
C言文
C語言中文網
序列相加
Python 中,支援兩種型別相同的序列使用“+”運算子做相加操作,它會將兩個序列進行連線,但不會去除重複的元素。
這裡所說的“型別相同”,指的是“+”運算子的兩側序列要麼都是列表型別,要麼都是元組型別,要麼都是字串。
例如,前面章節中我們已經實現用“+”運算子連線 2 個(甚至多個)字串,如下所示:
str=“c.biancheng.net”
print(“C語言”+“中文網:”+str)
輸出結果為:
C語言中文網:c.biancheng.net
序列相乘
Python 中,使用數字 n 乘以一個序列會生成新的序列,其內容為原來序列被重複 n 次的結果。例如:
str=“C語言中文網”
print(str*3)
輸出結果為:
‘C語言中文網C語言中文網C語言中文網’
比較特殊的是,列表型別在進行乘法運算時,還可以實現初始化指定長度列表的功能。例如如下的程式碼,將建立一個長度為 5 的列表,列表中的每個元素都是 None,表示什麼都沒有。
#列表的建立用 [],後續講解列表時會詳細介紹
list = [None]*5
print(list)
輸出結果為:
[None, None, None, None, None]
檢查元素是否包含在序列中
Python 中,可以使用 in 關鍵字檢查某元素是否為序列的成員,其語法格式為:
value in sequence
其中,value 表示要檢查的元素,sequence 表示指定的序列。
例如,檢查字元‘c’是否包含在字串“c.biancheng.net”中,可以執行如下程式碼:
str=“c.biancheng.net”
print('c’in str)
執行結果為:
True
和 in 關鍵字用法相同,但功能恰好相反的,還有 not in 關鍵字,它用來檢查某個元素是否不包含在指定的序列中,比如說:
str=“c.biancheng.net”
print(‘c’ not in str)
輸出結果為:
False
和序列相關的內建函式
Python提供了幾個內建函式(表 3 所示),可用於實現與序列相關的一些常用操作。
表 3 序列相關的內建函式
函式 功能
len() 計算序列的長度,即返回序列中包含多少個元素。
max() 找出序列中的最大元素。注意,對序列使用 sum() 函式時,做加和操作的必須都是數字,不能是字元或字串,否則該函式將丟擲異常,因為直譯器無法判定是要做連線操作(+ 運算子可以連線兩個序列),還是做加和操作。
min() 找出序列中的最小元素。
list() 將序列轉換為列表。
str() 將序列轉換為字串。
sum() 計算元素和。
sorted() 對元素進行排序。
reversed() 反向序列中的元素。
enumerate() 將序列組合為一個索引序列,多用在 for 迴圈中。
這裡給大家給幾個例子:
str=“c.biancheng.net”
#找出最大的字元
print(max(str))
#找出最小的字元
print(min(str))
#對字串中的元素進行排序
print(sorted(str))
輸出結果為:
t
.
[’.’, ‘.’, ‘a’, ‘b’, ‘c’, ‘c’, ‘e’, ‘e’, ‘g’, ‘h’, ‘i’, ‘n’, ‘n’, ‘n’, ‘t’]
相關文章
- 第三次blog
- 第三次Bolg
- 第三次作業
- OOP第三次BlogOOP
- 第三次上機
- 10.15第三次課AIAI
- OOP第三次部落格OOP
- 第三次 NOIP 的遊記
- 第三次部落格作業
- OOP第三次Blog作業OOP
- 第三次部落格總結
- JAVA第三次blog總結Java
- java第三次作業(1)Java
- 鴻蒙Next第三次充電鴻蒙
- 人工智慧第三次課程人工智慧
- 第三次小學期總結
- OPP第三次部落格作業
- OO第三次部落格作業
- OOP第三次部落格作業OOP
- 軟體工程第三次作業軟體工程
- 第三次小組站立會議
- 軟體基礎第三次作業
- 資料採集第三次作業
- 23201829OO第三次blog作業
- 23201115-鄧俊豪-第三次blog
- 陳志俠 李想 第三次作業
- 趙尚好 李柯銳第三次作業
- 王俊嘉 陳丹霞 第三次作業
- 張丁霽 劉崢 第三次作業
- 徐歡 朱秋逸 第三次作業
- outside_的第三次部落格作業IDE
- 3d遊戲第三次作業3D遊戲
- 資料採集實踐第三次作業
- 裘立帆 曾亨瑾第三次作業
- 林宏蕊 黃欣雨 第三次作業
- 陳柯烽 龍祖維 第三次作業
- 潘嘉敏 侯錦秀 第三次作業
- 王文彧 陳宇聰 第三次作業