天天看點

Python程式設計基礎:清單及序列基本操作(一)

作者:青少年程式設計CodeTeen

基本概念

清單是Python内置的有序、可變序列。清單的元素放在中括号“[ ]”裡面,使用逗号分隔不同的元素。

清單的元素資料類型可以不一樣,比如一個清單中可以包含數字和字元串。

建立清單

一、直接指派建立

list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c']
list3 = [1, 2, 'a', 'b'] #不同類型的元素
list4 = [1, [2, 3, 4], 3] #清單元素中也可以有清單
list5 = [] #建立空清單           

二、使用list([iterable])函數

list([iterable])雖然是内置函數,其實是可變序列類型清單的構造器,可以用于将字元串或元組轉為清單。

list1 = list() #建立空清單
list2 = list('abc') #建立清單:['a', 'b', 'c']
list3 = list((1, 2, 3)) #建立清單:[1, 2, 3]           

基本操作

清單是序列的一種,序列有以下常用的通用操作。

一、通路元素

序列的元素都是有序号的,這些序号稱為索引。

索引有從前往後的正方向索引,第一個元素的索引是0,第二個是1,以此類推;還有從後往前的反方向索引,清單倒數第一個元素的索引是-1,倒數第二個是-2,以此類推。

list1 = [1, 2, 3, 4, 5]
print(list1[0]) #索引0為清單第一個元素,結果為1
print(list1[2]) #索引2為清單第三個元素,結果為3
print(list1[-1]) #索引-1為清單倒數第一個元素,結果為5           

二、序列的嵌套

序列中的元素可以包含其它序列,稱為序列的嵌套。

list1 = [1, 2, [3, 4, 5], 6] 
list2 = list1[2] #list1第三個元素為清單[3, 4, 5],可以通過索引2通路
print(list2) #結果為:[3, 4, 5]

#通路子序列的元素
list1[2][1] #通路子序列第二個元素,結果為4
list2[1] #把子序列放到變量list2後再進行通路,結果同上           

三、序列的切片

所謂切片就是截取序列中的某一個片段,需要提供開始元素的索引和結束元素的索引。

切片的格式:序列變量名[開始索引 : 結束索引 : 步長]

開始索引:從哪個元素開始,包含這個元素。如果從頭開始,可以為空。

結束索引:到哪個元素結束,不包含這個元素。如果切片到最後,可以為空。

步長:隔多個元素取一個值,預設為1,代表取所有相關元素。如果為2,代表每取一個元素,跳過下一個元素,再取下一個元素。

list1 = ['a', 'b', 'c', 'd', 'e']

#從頭開始截取頭3個元素
print(list1[:3]) #結果:['a', 'b', 'c']
#截取中間3個元素
print(list1[1:4]) #結果:['b', 'c', 'd']
#截取最後三個元素
print(list1[-3:]) #結果:['c', 'd', 'e']
#截取整個清單
print(list1[:]) #結果:['a', 'b', 'c', 'd', 'e']
#步長為2切片,先取第一個,跳過第二個,再取第三個,以此類推
print(list1[::2]) #結果:['a', 'c', 'e']           

四、序列的長度

要知道序列含有多少個元素,可以使用内置函數len(s)(備注:s可以是序列或集合)。

list1 = [1, 2, 3, 4, 5]
print(len(list1)) #結果:5

list2 = [1, 2, list1, 3]
print(list2) #結果:[1, 2, [1, 2, 3, 4, 5], 3]
print(len(list2)) #結果:4           

五、序列中是否包含指定的元素

要判斷某個元素是否包含在序列中,可以使用in指令。如果序列中包含指定的元素,傳回True,否則傳回False。

list1 = [1, 2, 3, 'a', 'b', 'c']
print(2 in list1) #結果:True
print(5 in list1) #結果:False
print('a' in list1) #結果:True

list2 = [[1, 2], [3, 4]]
print([1, 2] in list2) #結果:True           

六、序列中最大或最小的元素

内置函數max()可以傳回序列中的最大值,min()可以傳回序列中的最小值。

如果序列中都是數字,則傳回最大或最小的數字。

list1 = [1, 2, 3, 4]
max(list1) #結果:4
min(list1) #結果:1           

如果序列中都是字元串,根據Unicode編碼的順序傳回編碼最大或最小的字元串。

list1 = ['中華', '人', '民', '共和國']
max(list1) #結果:'民'
min(list1) #結果:'中華'           

如果序列中既有數字又有字元串,運作max()或min()求值會出現錯誤。

七、序列求和

對于元素都是數字的序列,可以使用内置函數sum()求序列的和,即所有元素相加的結果。

list1 = [1, 2, 3, 4, 5]
print(sum(list1)) #結果:15