1. 程式人生 > >Python(5)--資料結構-序列-通用操作

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

  


 

  迭代:後續。