【python基礎】複雜資料型別-列表型別(增刪改查)

2023-06-01 12:00:35

1.初識列表(list)

列表由一系列按特定順序排列的資料元素組成。可以將任何型別資料元素加入列表中,其中的資料元素之間沒有任何關係。鑑於列表通常包含多個資料元素,給列表指定一個表示複數的名稱是個不錯的選擇。
在python中,用方括號[]來表示列表,並用逗號來分隔其中的資料元素。編寫程式如下所示

執行結果如下所示

我們可以發現,用print來輸出列表型別的變數names,會將names列表的所有資料元素都輸出出來。

2.存取列表

列表是有序集合,因此要存取列表的任何資料元素,只需將該資料元素的位置或索引告訴python即可。存取列表資料元素的語法格式,可指出列表的名稱,再指出資料元素的索引,並將其放在方括號內,如下所示:

我們如果要輸出第一個人的名字,也就是小明,拋開python規定,我們可編寫如下程式,做個測試。

執行結果如下所示

我們發現執行結果和我們想的不一致,問題出在哪裡呢,問題出在索引值上,我們現實中的第一個是索引1,但是在python中的第一個是索引0,所以我們這裡要對應python的第一個索引的話應該是索引0,也就是names[0],將程式做如下修改

執行結果如下所示

索引詳解圖

python為存取最後一個列表元素提供了一種特殊語法。通過將索引指定為-1,可讓python返回最後一個列表元素。程式如下所示:

執行結果如下所示

這種語法很有用,因為經常需要在不知道列表長度的情況下存取最後的元素。這種約定也適用於其他負數索引。例如索引-2返回倒數第二個列表元素。
索引詳解圖

3.使用列表資料元素

可像使用其他變數一樣使用列表中的資料元素,例如,可以使用字串拼接根據列表中的資料元素來建立訊息。
比如:向小紅打招呼,詢問已經學習python多長時間了,程式 如下所示

執行結果如下所示

4.修改列表資料元素

修改列表資料元素的語法與存取列表資料元素的語法類似。要修改列表資料元素,可指定列表名和要修改的資料元素的索引,再指定該資料元素的新值。
假設將第一個資料元素的姓名修改為小花,編寫程式如下所示

執行結果如下所示

可以根據索引值修改任何列表資料元素的值,而不是僅僅第一個資料元素的值。

5.新增列表資料元素

python提供了多種在既有列表中新增新資料元素的函數

5.1在列表末尾新增資料元素(append函數)

在列表中新增新資料元素時,最簡單的方式是將資料元素附加到列表末尾。
其語法格式:列表變數名.append(資料元素)
編寫程式做如下所示:

執行結果如下所示

append()方法讓動態地建立列表十分簡單。例如,可以先建立一個空列表,再使用一系列的append()語句新增資料元素。編寫程式如下所示:

執行結果如下所示

可以發現建立的列表與上面的一致。這種建立列表的方式極其常見,因為經常要等程式執行後,才知道在程式中需要儲存哪些資料。

5.2在列表中插入資料

使用insert函數可在列表的任何位置新增新資料元素。為此,需要指定新資料元素的索引和值。
其語法格式為:列表變數名.insert(要插入的索引值,要插入的資料)
假設我們要將小黃插入到名字列表中索引第0個的位置,編寫程式如下所示:

執行結果如下所示

由此可見,insert函數在將資料元素插入之後,其索引值和索引值之後的資料元素都將依次往後移1位。和現實中的插隊類似。

6.刪除列表資料元素

經常需要從列表中刪除一個或多個資料元素。可以根據索引值或值來刪除列表中的資料元素。

6.1關鍵字del

在python中,del關鍵字主要用於物件,也可以用於刪除變數,刪除列表變數或者列表的一部分等。物件的概念後期會再介紹
如果知道要刪除的資料元素在列表中的索引值,可使用del關鍵字。
其語法格式:del 要刪除的物件/變數/列表/列表部分
我們分別從刪除列表單個資料元素,連續多個資料元素,列表變數來介紹

6.1.1刪除單個列表資料元素

假設我們要把小明進行刪除,我們發現小明所在的索引位置為0
於是編寫程式如下所示:

執行結果如下所示

6.1.2刪除連續多個列表資料元素

假設我們要把連續著的小明和小紅同時刪除,我們發現小明和小紅所在的索引位置是0和1,集合上表示的話就是說0到2,但不包括2,這裡結合後面說的擷取列表,可以將要刪除的資料元素,也就是把小明和小紅放到一個擷取的列表中,然後通過del進行刪除,編寫程式如下所示

輸出結果上,就只剩下小黑和小白了。

6.1.3刪除列表變數

假設我們要把列表變數刪除,而不是清空列表。編寫程式如下所示

通過上面的輸出我們可以看到,程式報錯了,錯誤在第4行,提示names沒有被定義,也就是說names變數在輸出之前已經不存在了,也就是我們通過del關鍵字刪除了。經過del關鍵字刪除的列表變數,之後就不能夠被使用了。

6.2使用pop函數刪除元素

有時候,要將資料元素從列表中刪除,刪除的同時,我們後續還需要使用它的值。比如,可能要將使用者從活躍成員列表中刪除,並將其加入到非活躍成員列表中。

6.2.1刪除列表末尾資料元素

pop函數可刪除列表末尾的資料元素,並能夠接著使用它。pop源自這樣的類比:彈出,列表就像一個棧,而刪除列表末尾的資料元素相當於彈出棧頂元素。
其語法格式:列表變數名.pop()
假設我們要刪除小白,然後輸出小白已經被刪除,編寫程式如下所示:

執行結果如下所示

由此可見,pop函數是有返回值的。返回的是被刪除的列表末尾元素。

6.2.2刪除列表中任何位置處的資料元素

實際上,可以使用pop()來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素的索引即可。
其語法格式:pop(索引值)
編寫程式如下所示

執行結果如下所示:

我們可以發現使用pop函數彈出指定索引位置的資料元素後,後面的資料元素依次前移1位。
注意:我們刪除元素時,如果不確定使用del關鍵字還是pop函數,下面是一個簡單的判斷標準:如果要從列表中刪除一個資料元素,且不再以任何方式使用它,就用del關鍵字;如果你要在刪除元素後還想繼續使用它,就使用pop函數。

6.3根據值刪除資料元素

有時候,不知道要從列表中刪除的值所處的索引值。而只知道要刪除的資料元素的值,可使用remove函數
其語法格式:remove(資料元素值)
假設我們要刪除小黑這個名字,編寫程式如下所示

執行結果如下所示

我們可以發現,remove函數本身只是將資料元素根據值刪除,但是因為我們知道資料元素的值,後期要是想著使用這個我們刪除的值,我們可以先進行儲存,然後在用到的地方,再進行呼叫。
注意:remove()方法只刪除第一個與指定元素值相同的資料元素。如果要刪除的資料元素可能在列表中出現多次,就需要使用迴圈來判斷是否刪除了所有這樣的值。這會在後面進行介紹