Python(5)--資料結構-序列-通用操作
資料結構:
資料結構是以某種方式(如通過編號)組合起來的資料元素(如數、字元乃至其他資料結構)集合。在Python中,最基本的資料結構為序列(sequence)。
序列:
序列中的每個元素都有編號,即其位置或索引,其中第一個元素的索引為0,第二個元素的索引為1,依此類推。在有些程式語言中,從1開始給序列中的元素編號,但從0開始指出相對於序列開頭的偏移量。同時可迴繞到序列末尾,用負索引表示序列末尾元素的位置。
通用序列操作:
索引:
序列中的所有元素都有編號,也就是索引,從0遞增,使用索引來訪問元素:[索引]
>>> "hello"[1] 'e'
使用負數索引或從右邊=往左數,-1是最右邊的元素位置
>>> "hello"[-1] 'o'
切片:
使用索引可以進行切片操作,訪問特定範圍內的元素,使用兩個索引來指定範圍,冒號隔開:[起始位置: 結束位置]
注意:起始索引是包含該元素的,結束索引是不包含的
>>> s = "www.python.org" >>> s[4: 10] 'python'
注意:如果第一個索引指定的元素位於第二個索引指定的元素後面,結果為空序列
>>> s = "www.python.org" >>> s[4: 2] '' >>> s[-2: 2] ''
切片結束與末尾,可以省略第二個索引
>>> s = "www.python.org" >>> s[8:] 'on.org'
切片從頭開始同理
>>> s = "www.python.org" >>> s[:10] 'www.python'
複製整個序列可已將索引省略
>>> s = "www.python.org" >>> s[:] 'www.python.org'
指定步長:
執行切片操作還有一個引數是步長,在不指定的情況下步長為1,索引會按位置從一個元素到下一個元素
# 步長為1,和普通切片一樣 >>> s = "www.python.org" >>> s[:] 'www.python.org' >>> s[::1] 'www.python.org' # 步長為2,每隔一個元素取一次 >>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> s[::2] [1, 3, 5, 7, 9] # 步長不能為0,但是可以為負數,從右往左取 >>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> s[::-3] [9, 6, 3] # 步長為負數時,是從右往左取,即起始位置在右邊,所以第一個索引必須必第二個索引大 >>> s[2:5:-3] [] >>> s[8:3:-3] [9, 6]
相加:
使用加法拼接相同型別序列
>>> [1, 2, 3] + [4, 5] [1, 2, 3, 4, 5] >>> "hello" + "world" 'helloworld'
相乘:
序列和數n相乘,重複這個序列n次來常見一個新序列
>>> "hello" * 3 'hellohellohello' >>> [66] * 5 [66, 66, 66, 66, 66]
Nome用來表示什麼都沒有,如果想建立一個長度為8,但是什麼都不包含的列表,可以使用乘法來初始化
>>> [None] * 8 [None, None, None, None, None, None, None, None]
成員資格:in、not in
檢查特定的值是否包含在序列中,返回布林值:True或者False
>>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> 1 in s True >>> "a" not in s True >>> >>> a in "hello" False
長度、最小值、最大值:
使用內建函式len、min、max,len返回序列包含的元素個數,min返回最小值,max返回最大值
實際上min和max的實參是數,並不是序列
>>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> len(s) 9 >>> min(s) 1 >>> max(s) 9 >>> min(1, 2, 5) 1 >>> max(3, 6, 4) 6
迭代:後續。