1. 程式人生 > >python入門學習-列表和元組(1)

python入門學習-列表和元組(1)

索引 個人 .so .cn pytho 入門 main 範圍 mage

數據結構是通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合。這些數據元素可以是數字或者字符,甚至可以是其他數據結構。

在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)