2.8-列表類型

字符串或者數值列表是程序中常用的數據類型,例如使用一個字符串列表存儲全國的省份名稱,使用一個數值列表存儲全班學生的成績等。教學目標是掌握這種列表數據的使用。

1、列表類型含義
列表是Python中最基本的數據結構,列表是最常用的Python數據類型,列表的數據項不需要具有相同的類型。列表中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,Python已經內置確定序列的長度以及確定最大和最小的元素的方法。

2、如何創建列表?
只要把逗號分隔的不同的數據項使用方括號括起來即可,例如:

list1=["aa","bb",1,2]
list2=[1,2,3,4,5,2]

列表的元素可以重複,例如list2中有2重複
列表的元素類型可以不填,例如lis1中有字符串和數值
列表類型是Python 中的 list 類實例,例如:

list1=["aa","bb",1,2]
print(list1)
print(type(list1))

執行結果如下:

['aa', 'bb', 1, 2]
<class 'list'>

其中type(list1) 返回的類型是一個名稱爲 list1 的類。

3、如何訪問列表中的值?
使用下標索引來訪問列表中的值,也可以使用方括號形式截取字符,截取 的方法與字符串 截取 類似,例如:

list1=["aa","bb",1,2]
list2=[1,2,3,4,5,5,3,2]
print("list1[0]:",list1[0])
print("list2[1:5]",list2[1:5])

執行結果如下:

list1[0]: aa
list2[1:5] [2, 3, 4, 5]

4、如何修改列表中的數據項?
可以對列表的數據項進行修改或更新,你也可以使用append()方法來添加列表項,例如:

list1=["aa","bb",1,2]
print("list1[1]:",list1[1])
list1[1]="BB" # 修改列表中的數據項
print("list1[1]:",list1[1])
list1.append(3) # append 增加列表數據項
list1.append("3")
print(list1)

執行結果如下:

list1[1]: bb
list1[1]: BB
['aa', 'BB', 1, 2, 3, '3']

5、如何刪除列表中的數據項?
可以使用 del 語句來刪除列表的的元素,例如:

list1=["aa","bb",1,2]
print(list1) # 刪除列表數據項之前
del list1[2]
print(list1) # 刪除列表數據項之後

執行結果如下:

['aa', 'bb', 1, 2]
['aa', 'bb', 2]

注意:del 刪除數據項是將數據項和索引位置一起刪除,而非將數據項置爲空索引位置保留

6、多個列表如何組合?
可以使用"+"來連接多個列表,例如:

list1=["aa","bb",1,2]
list2=["cc","dd",3,4]
list3=list1+list2
print(list1)
print(list2)
print(list3)

執行結果如下:

['aa', 'bb', 1, 2]
['cc', 'dd', 3, 4]
['aa', 'bb', 1, 2, 'cc', 'dd', 3, 4]

7、列表如何截取?list[start:end:step]
start、end、step 可選,冒號必須的, 基本含義是從start 開始(包括list[start]),以step 爲步長,獲取到end 的一段元素(注意不包括list[end])。
如果step=1,爲 list[start],list[start+1],…,list[end-2],list[end-1]。
如果step>1,第一爲list[start],第二爲list[start+step],第三爲list[start+2*step],…, 以此類推,最後一個爲list[m],其中m<end,但是m+step>=end。
即索引的變化是從start 開始,按step 跳躍變化,不斷增大,但是不等於end,也不超過end
如果end 超過了最後一個元素的索引,那麼最多取到最後一個元素。
start 不指定默認0,end 不指定默認序列尾,step 不指定默認1。
step 爲正數則索引是增加的,索引沿正方向變化。
step 爲負數則索引是減少的,索引沿負方向變化。
不能使用step=0,不然索引就原地踏步不變了。
如果start,end 爲負數,表示倒數的索引,例如start=-1,則表示len(list)-1;start=-2,表
len(list)-2.

例如:

# 列表的截取
# start 默認0,end默認序列尾,step默認1
list=[0,1,2,3,4,5,6,7,8,9,10,11]
print('list',list)

# 用法一:顯示start end,省略step
print('list[0:2]:',list[0:2]) # 截取第0位開始,到第2位,不包含第2位,步長爲1,

# 用法二:顯示end,省略 start step,此時start的冒號不能省略
print('list[:2]:',list[:2]) # 截取第0位開始,到第2位,不包含第2位,步長爲1,start省略寫法

# 用法三:顯示 start end,省略step,end爲負數,負數代表右邊開始數的第幾位,
# 注意倒數是從第1位開始,不像正序是從第0位開始
print('list[0:-2]',list[0:-2]) # 從第0位開始,取到倒數第2位結束,步長爲1

# 用法四:顯示start,省略end step,end省略代表序列尾
# start爲負數代表右邊開始的第幾位
print('list[-2:]',list[-2:]) # 從倒數第2位開始,到序列尾,步長爲1

# 用法五:end 取值索引小於start索引,則取不到數據
print('list[-2:6]',list[-2:6])

# 用法六:顯示start,省略end step,end省略代表序列尾
# start爲正數
print('list[2:]',list[2:])

# 用法七:顯示start end,end爲負數
# end爲負數爲右邊開始的第幾位
print('list[2:-1]',list[2:-1]) # 從第2位開始,到倒數第一位,步長爲1

# 用法八:省略 start end step,但是 start 和 end 之間的冒號不能省略
print('list[:]',list[:]) # start省略爲0,end省略爲序列尾,step省略爲1,相當於複製一份

# 用法九:省略start end,顯示step
print('list[::2]',list[::2]) # start省略爲0,end省略爲序列尾,步長爲2

# 用法十:省略start end,顯示step,step爲負數
# 步長爲負數爲從右邊向左邊移動
print('list[::-2]',list[::-2]) # step爲負數,start省略爲序列尾,end省略爲第0位

# 用法十一:顯示start end step,step爲正數
# 步長爲正數爲從左邊向右邊移動
print('list[0:7:2]',list[0:7:2]) 

# 用法十一:顯示start end step,step爲負數
# 步長爲負數爲從右邊向左邊移動
print('list[7:0:-2]',list[7:0:-2]) # 從第7位開始,到第0位結束,從右邊向左邊移動,每次移動2位

# 用法十一:顯示start end step,step爲負數,end爲負數
# 步長爲負數爲從右邊向左邊移動
# end爲負數爲右邊開始的第幾位
print('list[7:-1:-1]',list[7:-1:-1]) # 從第7位開始,到倒數第1位結束,從右邊向左邊移動,每次移動1位

# 用法十二:顯示start end step,step爲負數
# 步長爲負數爲從右邊向左邊移動
print('list[5:1:-2]',list[5:1:-2])

# 用法十二:顯示start end,省略step,但是 end大於序列長度,取到序列尾
print('list[8:14]',list[8:14])

執行結果如下:

list [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[0:2]: [0, 1]
list[:2] [0, 1]
list[0:-2] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list[-2:] [10, 11]
list[-2:6] []
list[2:] [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[2:-1] [2, 3, 4, 5, 6, 7, 8, 9, 10]
list[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[::2] [0, 2, 4, 6, 8, 10]
list[::-2] [11, 9, 7, 5, 3, 1]
list[0:7:2] [0, 2, 4, 6]
list[7:0:-2] [7, 5, 3, 1]
list[7:-1:-1] []
list[5:1:-2] [5, 3]
list[8:14] [8, 9, 10, 11]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章