Python基礎程式設計(六)——序列型別

止步聽風發表於2020-12-16

之前提到了python中的幾種標準型別,這裡對這幾種標準型別簡單總結一下,作為學習筆記記錄。

在之前文章中提到的關於成員運算子的內容中,出現過序列型別的說法,那麼什麼是序列型別?

序列型別

序列(sequence)是指一段可以存放多個值的連續記憶體空間,這些值按照一定的順序排列,可以通過每個值所在位置的編號(索引值)來進行訪問。

在python中,序列型別包括string,list,tuple,set和dict。一般說來,序列型別都支援索引,切片,相加,相乘,成員操作,但是比較特殊的是,set和dict不支援索引,切片,相加,相乘操作。

索引操作

索引操作是指該序列型別可以通過下標值實現元素的隨機訪問。

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)

print(a[3])
print(b[4])
print(c[5])
print(a[-3])
print(b[-4])
print(c[-5])

結果為:

d
5
6
i
6
5

序列型別的索引操作有兩個方向,正向從0開始,len-1結束,反向從-1開始,-len結束。

切片操作

切片操作是指通過特定的語法可以訪問一定範圍內的元素,從而生成新的序列。語法為:

var[start:end:step]

各個引數的含義為:

  • var表示序列物件
  • start表示切片的起始位置,包含此位置,可以省略,省略時預設為0
  • end表示切片的終止位置,不包含此位置,可以省略,省略時預設為末尾位置
  • step表示切片的步長,可以省略,省略時預設為1,第二個冒號也可省略
a = [1,2,3,4,5,6,7,8,9]

print(a[1:6])
print(a[1:6:2])
print(a[:6:2])
print(a[1::2])
print(a[:])
print(a[::])
print(a[::-1])

結果為:

[2, 3, 4, 5, 6]
[2, 4, 6]
[1, 3, 5]
[2, 4, 6, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

需要注意的時,當step=-1時,預設的起始位置和終止位置會發生改變。

相加操作

相加操作是指相同序列型別之間可以進行連線

a = [1,2,3,4]
b = [3,4,5,6]

print(a + b)

相乘操作

相乘操作是指對序列型別重複n次並新增到原序列上。

a = [1,2,3,4]
print(a * 3)

結果為:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

成員操作

成員操作是指可以利用成員運算子判斷元素是否存在於某序列型別。

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)
d = {1,2,3,4}
e = {1:'tom',2:'jack'}

print('a' in a)
print(1 in b)
print(1 in c)
print(1 in d)
print(1 in e)

結果為:

True
True
True
True
True

序列相關函式

函式功能
len()計算序列的長度,即返回序列中包含多少個元素
max()找出序列中的最大元素
min()找出序列中的最小元素
list()將序列轉換為列表
str()將序列轉換為字串
sum()計算元素和。注意,對序列使用 sum() 函式時,做加和操作的必須都是數字,不能是字元或字串,否則將丟擲異常
sorted()對元素進行排序
reversed()反向序列中的元素。dict是無序的序列型別,因此沒有該操作
enumerate()將序列組合為一個索引序列,多用在 for 迴圈中

上述函式有幾個需要注意:

a = 'abcdefghigk'
b = [1,2,3,4,5,6,7,8,9]
c = (1,2,3,4,5,6,7,8,9)
d = {1,2,3,4}
e = {1:'tom',2:'jack'}

print(max(a))
print(max(e))
print(list(a))
print(list(e))
print(str(b),'  ',len(str(b)))
print(str(e),'  ',len(str(e)))
print(sum(e))
print(sorted(e))

結果為:

k
2
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k']
[1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9]    27
{1: 'tom', 2: 'jack'}    21
3
[1, 2]

這幾種操作可能跟想當然的結果不太一樣,需要注意。

相關文章