- 在第一課中學習的數據類型是對單個值的類型進行定義,數據結構是通過某種方式組織到一起的數據元素的集合。組成數據結構的數據元素可以是數字或者字符甚至可以是數據結構。Python中最基本的數據結構是序列(sequence)。序列中的每個元素被分配一個序號,成爲索引,索引從0開始依次往後數。Python包含6中內建的序列:列表、元組、字符串、Unicode字符串、buffer對象、xrange對象。
序列的通用操作包括索引、分片(步長)、加法、乘法、成員資格、長度、最大值、最小值。字符串、元組、列表等序列都可以使用這些操作。
- 索引-通過序列中元素的序號來訪問序列中的單個元素
>>> str='love' >>> str[0] ##字符串的索引 'l' >>> str[1] 'o' >>> str[2] 'v' >>> list=['zhao','qian','sun','li'] >>> list[2] ##列表的索引 'sun' >>> 1,2,3 (1, 2, 3) >>> (1,2,3)[1] ##元組的索引 2
2.分片-通過索引訪問序列中的多個元素
格式:SequenceName[被訪問第一個元素的索引:第一個未被訪問元素的索引:步長]
>>> msg=[1,2,3,4,5,6,7,8,9] >>> msg[1:5] [2, 3, 4, 5] >>> msg[1:8:2] [2, 4, 6, 8]
msg[1:5]表示從序列索引爲1的元素開始訪問,一直到索引爲5的元素結束不包含索引爲5的元素;msg[1:8:2]表示從序列中索引爲1的勻速開始到索引爲8的元素結束,且每兩個元素訪問一次。
如果格式中被訪問的第一個元素處沒有給出索引,則表示從序列的第一個元素開始訪問;如果格式中第一個不需要訪問的元素的索引沒有給出,則表示從需要訪問的第一個元素的索引開始一直訪問到序列的最後一個元素,包含最後一個元素。
1 >>> msg=[1,2,3,4,5,6,7,8,9] 2 >>> msg[:7] #從序列的第一個元素開始訪問截止到索引爲7的元素(不包含索引爲7的元素) 3 [1, 2, 3, 4, 5, 6, 7] 4 >>> msg[2:] #從序列中索引爲2的元素(包含索引爲2的元素)開始訪問,一直到序列的最後一個元素(包含序列的最後一個元素) 5 [3, 4, 5, 6, 7, 8, 9]
序列中的索引也可以使用負數表示。序列的最後一個元素的索引爲-1,倒數第二個爲-2向前依次類推。
1 >>> msg 2 [1, 2, 3, 4, 5, 6, 7, 8, 9] 3 >>> msg[-6:-1] 4 [4, 5, 6, 7, 8]
在使用索引的時候要注意,分片中左邊的索引對應的元素如果比給出的右邊的索引對應的元素晚出現,返回的是一個空的序列。
1 >>> msg 2 [1, 2, 3, 4, 5, 6, 7, 8, 9] 3 >>> msg[5:2] #索引爲5的元素要比索引爲2的元素晚出現 4 [] 5 >>> msg[-1:-4] #索引爲-1的元素要比索引爲-4的元素晚出現 6 []
3.步長
在分片中已經說明了步長的作用。步長可以是更大的步長比如2、3。步長設置爲n則表示序列中每n個元素訪問一次。步長也可以是負數,當步長爲負數的時候表示在訪問序列中的元素的時候,從後往前訪問
1 >>> msg 2 [1, 2, 3, 4, 5, 6, 7, 8, 9] 3 >>> msg[-1:-8:-2] 4 [9, 7, 5, 3]
4.加法
加法運算符可以進行序列的連接操作,字符串拼接中的“+”的使用本質上就是序列的加法。只有相同類型的序列纔可以進行加法操作。
1 >>> [1,2,3]+[4,5,6] #列表加法 2 [1, 2, 3, 4, 5, 6] 3 >>> 'hello'+'world' #字符串加法 4 'helloworld' 5 >>> (1,2)+(3,4) #元組加法 6 (1, 2, 3, 4)
5.乘法
用一個數字n乘以一個序列會返回一個新的序列,新序列重複原來的序列n次。
1 >>> 'i love you'*10 ##字符串乘法 2 'i love youi love youi love youi love youi love youi love youi love youi love youi love youi love you' 3 >>> [1]*20 ##列表乘法 4 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 5 >>> (1,2)*5 ##元組乘法 6 (1, 2, 1, 2, 1, 2, 1, 2, 1, 2) 7 >>> [None]*20 #創建一個20個元素的空列表 8 [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
6.成員資格in
判斷一個值是否存在於序列中,若是返回True,若不是返回False。可用於判斷輸入的值是否存在於數據庫中,讀寫執行權限的判斷。
1 >>> permission='rwx' 2 >>> 'r' in permission 3 True
7.長度len、最大值min、最小值max
長度是用來統計一個序列中元素的個數;最大值返回序列所有元素中的最大值;最限制返回序列所有元素中的最小值。
1 >>> msg=[1,2,3,4,5,6,7] 2 >>> len(msg) 3 7 4 >>> max(msg) 5 7 6 >>> min(msg) 7 1