python入門學習-列表和元組(1)
數據結構是通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合。這些數據元素可以是數字或者字符,甚至可以是其他數據結構。
在python中,最基本的數據結構是序列(sequence)。序列中的每個元素被分配一個序號——即元素的位置,也稱為索引。第一個索引是0,第二個是1,以此類推。
1.1序列概覽
python包含6種內建的序列,最常用的兩種類型是:列表和元組。其他的內建序列類型有字符串、Unicode字符串、buffer對象和xrang對象。
列表和元組主要區別在於,列表可以修改,元組不能修改。如果根據要求來添加元素,那麽列表可能會更好用;而出於某些原因,序列不能修改的時候,
使用元組則更為合適。一般來說,在編程中,幾乎所有的情況下都可以用列表替代元組(註意一個例外的情況:使用元組作為字典的鍵,因為鍵不可修改,所以不能使用列表)。
用序列表示數據庫中一個人的信息——第1個元素是姓名,第二個元素是年齡(列表的各個元素通過逗號分隔,寫在方括號中)。序列可以包含其他的序列,
所以可以構建一個人員信息的列表,這個列表就是你的數據庫。
註:python中還有一種名為容器(contaier)的數據結構。容器基本上是包含其他對象的任意對象。序列(例如列表和元組)和映射(例如字典)是兩類主要
的容器。序列中的每個元素都有自已的編號,而映射中的每個元素則有一個名字(也稱為鍵)
1.2通用序列操作
所有序列可以進行特定的操作。這些操作包括:索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及檢查某個元素是否屬於序列的成員
(成員資格)。除此之外,python還有計算序列長度、找出最大元素和最小元素的內建函數。
1.2.1索引
序列中的所有元素都是有編號的——從0開始遞增。這些元素可以通過元素分別訪問,如下圖所示
註:字符串就是一個由字符組成的序列。索引0指向第一個元素,在這個列子中就是字母H。
可以通過索引獲取元素。所有序列都可以通過這種方式進行索引。使用負數時,python會從右邊,也就是從最後1個元素開始計數。最後1個元素的編號是-1(不是
-0,-0會和第一個元素重合):
如果一個函數調用返回一個序列,那麽可以直接對結果進行索引操作。例如,假設你只對用戶輸入年份的第四個數字感興趣,那麽,可以進行如下操作:
代碼清單1-2-1-1是一個示例程序,要求輸入年、月(1-12的數字)、日(1-31),然後打印出相應的月份名稱等等
代碼清單1-2-1-1 索引示例
以下是程序執行的一部分結果:
最後一行是程序的輸出
1.2.2分片
分片操作是用來訪問一定範圍內的元素。分片通過冒號隔開的兩個索引來實現:
第1個索引是要提取的第一個元素的編號,而最後的索引則是分片之後剩余部分的第一個元素的編號。見如下代碼
簡而言之就是第一個索引的元素包含在分片內,第二個則不包含在分片內
1.2.2.1優雅的捷徑
如果分片包括序列結尾的元素,那麽,只需置空最後一個索引即可:
這種方法也適用於序列開始的元素:
如果需要復制整個序列,可以將兩個索引都置空
代碼清單1-2-2-1是一個小程序,它會提示輸入URL(假設它的形式為http://www.somedomainname.com),然後提取域名。
代碼清單1-2-2-1 分片示例
以下是程序運行的示例:
1.2.2.2更大的步長
在普通的分片中,步長是1——分片操作就是按照這個步長逐個遍歷序列的元素,然後返回開始和結束點之間的所有元素(顯示步長)
如果步長被設置為比1大的數,那麽就會跳過某些元素。例如,步長為2的分片包括的是從開始到結束每隔1個的元素。
前面提到的捷徑也可以使用。如果需要將每4個元素中的第1個提取出來,那麽只要將步長設置為4即可:
步長不能為0(0不會執行),但步長可以是負數,此時分片從右到左提取元素:
當使用一個負數作為步長時,必須讓開始點(開始索引)大於結束點。對於正數步長,python會從序列的頭部開始向右提取元素,直到最後一個元素;對於負數步長,則是從序列的尾部開始向左提取元素,直到第一個元素。
,
python入門學習-列表和元組(1)