目錄
一、Python中的列表
1、列表的定義和賦值? ? ??
2、列表的使用
二、列表的“增刪改查”?
1、列表中元素的增加
A、在列表尾添加元素
B、在列表中插入元素
2、列表中“元素的刪除”
A、使用del語句刪除元素
B、使用pop()函數刪除元素
C、彈出列表中任何位置元素
D、根據值刪除元素
3、列表中“元素的修改”
一、Python中的列表
1、列表的定義和賦值? ? ??
? ? ? ? Python中的列表本質上和C語言中的數組類似,如果你學過C語言,那么在理解這一概念時,就沒有難度了。Python中的列表能夠讓你在一個地方存儲成組的信息,可以說,這個是新手直接使用的最強大的功能之一了。(不是我說的,是某本Python書說的,不關我的事)?
? ? ? ? 列表定義:由一系列按特定順序排列的元素組成,其中的元素之間可以沒有任何關系。初學者可以將列表理解為一個“箱子”,這個箱子什么都可以裝,但是得有順序。?
? ? ? ? 列表形式:用方括號“[ ]”來表示列表,并用逗號來分割其中的元素。例如:
people=['uncle','father','mother','grandmother','teacher']
print(people)
注意到上圖中的輸出,沒學過編程語言的人可不希望看到有方括號的出現,那么此時要想按照“常理”輸出的話,就得訪問列表元素了。說白了,其實就是要告訴計算機你要操作的元素在哪?
? ? ? ? 前面我們介紹了“列表是有序集合”,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python解釋器即可。剛才也提到Python程序就像我們的“新家”一樣,有很多“箱子”,那么要想訪問準確,就得說出箱子名稱,也就是“列表名稱”和“該元素在列表中的位置”.如下代碼所示:
people=['uncle','father','mother','grandmother','teacher']#定義列表
print(people[1])#輸出位置為1的元素
print(people[1].title())#輸出的單詞開頭大寫
print(people[1].upper())#輸出的單詞大寫
print(people[1].lower())#輸出的單詞小寫,用了前面學的字符串函數,溫故知新!
? ? ? ?通過觀察可以看出,Python中列表的“索引”不是從“1”開始的,而是從“0”開始的,這和其他編程語言是相同的,例如C語言中的數組下標。另外,Python還為訪問最后一個列表元素提供了一種特殊語法,我這里稱為“負索引法”:列表下標是“-1”,則訪問列表倒數第一個元素;列表下標是“-2”,則訪問列表倒數第二個元素;以此類推!當列表為空時,這種訪問最后一個元素的方式會導致錯誤。
?至此列表的定義和賦值就結束了。
2、列表的使用
?列表的使用很簡單,我們用兩行代碼來說明:
people=['uncle','father','mother','grandmother','teacher']#定義列表
messgae=people[2]+" "+"is "+people[1]+"'s "+"wife"
print(messgae.title())
二、列表的“增刪改查”?
? ? ? ?列表是變量的集合,可以說是一個“大變量”。既然是變量,那么它就會隨著程序的運行等進行變化。那么,這就涉及到列表的增刪改查了!“查”其實就是上面介紹的訪問的意思。能訪問,說明存在;不能,則說明不存在。這里只是按照數據庫管理的術語命名標題了!
1、列表中元素的增加
列表增加的方法有以下2種:在列表尾添加元素,在列表中插入元素。
A、在列表尾添加元素
這是最簡單的方式了,用代碼說明:
people=['uncle','father','mother','grandmother','teacher']#定義列表
people.append("wife")#用append()方法將元素“wife”添加到列表末尾,并且不影響列表其他元素。
print(people)
? ? ? ?函數append(),可以很方便的在列表末尾添加元素,這就可以動態的創建列表了。所謂“動態”,是指可以先定義一個空的列表,再使用若干append()語句往列表里添加元素,例如下面一段程序:
people_1=[]#定義列表1
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
people_1.append('uncle')
people_1.append('father')
people_1.append('mother')
people_1.append('grandmother')
people_1.append('teacher')
people_1.append("wife")
print(people_1)
print(people_2)
? ? ? ?這種動態添加元素的方法很常用,在寫代碼的時候,不知道列表中該存儲哪些數據,但是隨著程序的編寫,以上內容逐漸明了,則可以使用append(),為列表“添磚加瓦”。
B、在列表中插入元素
插入的英文單詞“insert”,則是“在列表中插入元素的”函數名。與“向列表末尾添加元素”不同,一個列表只有一個末尾,即前者添加元素的位置是確定的,但是后者要在列表任意位置添加元素。由此,我們在使用本方法時,除了要說明添加的具體元素是什么外,還需指明添加的位置。例如:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)
people_2.insert(3,"grandfather")
print(people_2)
插入詳解:函數insert()在位置3處添加空間,將“grandfather”存儲到這個新的空間,并將之后所有的元素右移一個位置!
2、列表中“元素的刪除”
?刪除列表元素的方法有四種。
A、使用del語句刪除元素
如果知道要刪除的元素在列表中的位置,則可以用del語句刪除元素。代碼舉例:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)
del people_2[1]
print(people_2)
del people_2[1]
print(people_2)
在上述示例中,一旦使用del語句刪除列表中的元素,用戶就無法訪問了。
B、使用pop()函數刪除元素
? ? ? ? 學過C語言的同學可能對這個函數不陌生,因為在棧的操作中有這么一個函數,用于將棧頂元素彈出棧!。而在Python中,可以將列表類比成一個棧(給沒學過C語言的科普一下“棧”這個名詞:棧就像一個水杯(只有一個口),有一定的大小,里面可以裝“元素”,遵循“先進后出”的原則,即如果把所有元素都“入棧”,再“出棧”,那么最先進入的元素,在出棧時,總是最后出來。)在Python中,此方法的默認效果就是:刪除棧頂元素。對應到列表中,就是刪除列表表尾元素。
? ? ? ? 而本方法適用于:要將元素從列表中刪除,但是還要接著使用它的值。(我個人感覺pop()方法只能是稱之為移除,因為在使用本方法時,在大多數情況下,只是把某個元素用另一個變量保存起來)例如,你在CF中殺死一名敵人,那么游戲系統就需要將其從本輪游戲存活者的名單中刪掉,同時還需要使用這名敵人的名字,并在消息欄中顯示“XXX被你擊斃”的消息。
用代碼說明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)#打印列表2
poped_1=people_2.pop()#刪除列表表尾元素,并將其賦值給poped_1
print(people_2)#打印列表2,顯示原表尾元素已被刪除
print(poped_1)#打印彈出的元素,表明可以使用
C、彈出列表中任何位置元素
? ? 在嘗試B方法刪除元素時,細心的同學可能就會發現,可以在pop()函數的括號里加上參數。那么這個參數就可以寫成是列表元素的位置,從而達到“彈出列表中任何位置元素”的目的。
代碼說明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)#打印列表2
poped_1=people_2.pop(1)#刪除列表位置1上的元素,并將其賦值給poped_1
print(people_2)#打印列表2,顯示原表位置為1的元素已被刪除
print(poped_1)#打印彈出的元素
?
以上三種方法大致可以歸類為“在知道元素位置的情況下而進行的刪除操作”,那么該如何選擇刪除方法呢?就看你在從列表中刪除某一元素后,是否還要使用該元素。使用,則選擇pop();永不再用,選擇del語句。
D、根據值刪除元素
在未知待刪元素位置的情況下,僅憑待刪元素的值,也可使用remove()函數完成刪除操作。當然,此種方法刪除的元素依然可以在使用,只要提前“備份”。這里需要注意的是:函數remove()只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用循環結構來判斷是否刪除了所有這樣的值。
代碼舉例:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)#打印列表2
people_2.remove('teacher')
print(people_2)#打印列表2,表明刪除成功
對比學習,可以使我們的印象深刻:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)#打印列表2,顯示當前列表有的元素,與下文刪除元素后做對比
beifen_1=people_2[0]#也可以是beifen_1="uncle"
#使用A方法刪除列表任意元素
del people_2[0]#刪除元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#打印備份1中的元素
people_2.insert(0,beifen_1)#把剛才刪除的元素再補充回去,方便使用另一種刪除方法
print("\n")#使用B方法刪除列表表尾元素
print(people_2)#打印列表2,顯示當前列表有的元素,與下文刪除元素后做對比
beifen_1=people_2.pop()#備份刪除的元素,同時刪除元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#顯示刪除的元素
people_2.append(beifen_1)#把剛才刪除的元素再補充回去,方便使用另一種刪除方法
print("\n")#使用C方法刪除列表任意元素
print(people_2)#打印列表2,顯示當前列表有的元素,與下文刪除元素后做對比
beifen_1=people_2.pop(0)#備份刪除的元素,同時刪除該元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#顯示刪除的元素
people_2.insert(0,beifen_1)
print("\n")#使用D方法刪除列表任意元素
print(people_2)#打印列表2,顯示當前列表有的元素,與下文刪除元素后做對比
beifen_1="mother"#備份刪除的元素
people_2.remove("mother")
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#顯示刪除的元素
people_2.insert(0,"mother")
print("\n")#是否可以單獨使用pop()函數?
print(people_2)#打印列表2,顯示當前列表有的元素,與下文刪除元素后做對比
people_2.pop(0)#刪除表首元素
print(people_2)#顯示當前列表元素
?
刪除方法小結:
? ? ? ?從上面一段綜合代碼可以看出,刪除列表中某元素時,是需要一定信息的:該元素是什么或者該元素位于列表的哪個位置。既然知道這些信息,那么我們完全可以定義一個變量,將要刪除的元素備份起來,再執行刪除。也就是說,以上刪除語句在我個人看來是一樣的功能“將列表中的某一元素刪除”,而不用區別到底該使用哪種方法。以上在介紹各個方法時,也只是便于大家區分和識記。根本不需要根據“刪除的元素是否要再次使用而選擇調用哪個刪除語句”
3、列表中“元素的修改”
?修改列表中的元素與訪問列表元素類似。要修改列表元素,就得指定列表名、要修改元素的位置以及該元素的新值。
代碼說明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定義列表2
print(people_2)
people_2[0]="policeman"#修改語句
print(people_2)
元素的修改其實就是列表元素的再一次賦值!