在這章中引入了數據結構的概念。數據結構是通過某種方式組織在一起的數據元素的集合。在python中,最基本的數據結構就是序列。序列中的每個元素被分配一個序號,即元素的位置,也被稱為索引。注意:第一個索引是0。
1.序列概覽
python有6種內建的序列:列表,元組,字符串,Unicode字符串,buffer對象和xrange對象。
這里重點介紹列表和元組。列表和元組主要區別在于,列表可以修改,元組不可修改。一般來說,在幾乎所有情況下列表都可以代替元組。
在需要操作一組數值的時候,序列很好用:
代碼如下:
Edward = ["Gumby",42]
同時,序列可以包含其他的序列。如:
代碼如下:
Edward = ["Gumby",42]
John = ["Smith",50]
database = [Edward,John]
2. 通用序列操作
所有序列類型都可以進行某些特點的操作,包括:索引,分片,加,乘以及檢查某個元素是否屬于序列的成員(成員資格)。除此之外,python還有計算序列長度,找出最大元素和最小元素的內建函數。
2.1 索引
序列中的所有元素都是有編號的--從0開始遞增。這些元素可以通過編號分別訪問:
代碼如下:
>>>greeting = "hello"
>>>greeting[0]
'H'
使用負數索引的話,python會從右邊,也就是從最后一個元素開始計數,最后一個元素的位置編號是-1!
代碼如下:
>>> greeting[-1]
'g'
2.2 分片
分片可以訪問一定范圍內的元素,通過冒號相隔的2個索引來實現。分片對于提取序列的一部分是很有用的,第一個索引是提取部分的第一個元素編號,最后的索引是分片之后剩下部分的第一個元素編號。
代碼如下:
>>> number = [1,2,3,4,5,6,7,8,9,10]
>>> number[3:6]
[4,5,6]
>>> number[0:1]
[1]
2.2.1 優雅的捷徑
需要訪問最后3個元素,可以這樣顯式操作:
代碼如下:
>>> number[7:10]
[8,9,10]
這里索引10指向的第11個元素不存在,卻是在最后一個元素之后。
如果需要從列表結尾開始計數,就是說如果分片所得部分包括序列結尾的元素,那么只需置空最后一個索引:
代碼如下:
>>> number[-3:]
[8,9,10]
這種方法適用于序列開始的元素或者顯示整個序列:
代碼如下:
>>> number[:3]
[1,2,3]
>>> number[:]
[1,2,3,4,5,6,7,8,9,10]
2.2.2 更大的步長
進行分片的時候,分片的開始和結束都需要進行指定,另一個參數-步長,通常是隱式設置的。默認的步長是1。如果顯示設置步長為比1大的數,那么會跳過某些元素。
代碼如下:
>>> number[0:10:2]
[1,3,5,7,9]
>>> number[3:6:3]
[4]
步長不能為0,但是可以是負數,即從右到左提取元素:
新聞熱點
疑難解答