Python編程從入門到實踐-連載2(列表簡介)

交流學習吧 發佈 2020-03-01T11:39:47+00:00

當你請求獲取列表元素時,Python只返回該元素,而不包括方括號和引號: 3.1.2 索引從 0 而不是 1 開始 在Python中,第一個列表元素的索引為0,第二個列表元素的索引為1。


3.1 列表是什麼
列表由一系列按特定順序排列的元素組成。 在Python中,用方括號( [ ])來表示列表,並用逗號來分隔其中的元素。

如果你讓Python將列表列印出來, Python將列印列表的內部表示,包括方括號

3.1.1 訪問列表元素
列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python即可。
要訪問列表元素,可指出列表的名稱,再指出元素的索引,並將其放在方括號內
下面的代碼從列表bicycles中提取第一款自行車:

1處演示了訪問列表元素的語法。當你請求獲取列表元素時, Python只返回該元素,而不包
括方括號和引號:

3.1.2 索引從 0 而不是 1 開始
在Python中,第一個列表元素的索引為0,第二個列表元素的索引為1。根據這種簡單的計數方式,要訪問列表的任何元素,都可將其位置減1,並將結果作為索引。例如,要訪問第四個列表元素,可使用索引3。

面的代碼訪問索引1和3處的自行車:

這些代碼返回列表中的第二個和第四個元素:

Python為訪問最後一個列表元素提供了一種特殊語法。通過將索引指定為-1,可讓Python返
回最後一個列表元素:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])


這些代碼返回'specialized'。

這種語法很有用,因為你經常需要在不知道列表長度的情況
下訪問最後的元素。這種約定也適用於其他負數索引,例如,索引-2返回倒數第二個列表元素,
索引-3返回倒數第三個列表元素,以此類推。

3.1.3 使用列表中的各個值
下面來嘗試從列表中提取第一款自行車,並使用這個值來創建一條消息:

我們使用bicycles[0]的值生成了一個句子,並將其存儲在變量message中(見)。輸出是一
個簡單的句子,其中包含列表中的第一款自行車:

3.2 修改、添加和刪除元素
3.2.1 修改列表元素
修改列表元素的語法與訪問列表元素的語法類似。要修改列表元素,可指定列表名和要修改
的元素的索引,再指定該元素的新值。
例如,假設有一個摩托車列表,其中的第一個元素為'honda',如何修改它的值呢?

我們首先定義一個摩托車列表,其中的第一個元素為'honda'(見)。接下來,我們將第一
個元素的值改為'ducati'(見)。輸出表明,第一個元素的值確實變了,但其他列表元素的值
沒變:

3.2.2 在列表中添加元素
1. 在列表末尾添加元素
在列表中添加新元素時,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將
添加到列表末尾。繼續使用前一個示例中的列表,在其末尾添加新元素'ducati'


方法append()將元素'ducati'添加到了列表末尾(見1),而不影響列表中的其他所有元素:


即:m.append("qwe"):將字符串「qwe」添加到名稱為m的表中的末尾。

2. 在列表中插入元素
使用方法insert()可在列表的任何位置添加新元素。為此,你需要指定新元素的索引和值。


在這個示例中,值'ducati'被插入到了列表開頭(見);方法insert()在索引0處添加空間,
並將值'ducati'存儲到這個地方。這種操作將列表中既有的每個元素都右移一個位置:

3.2.3 從列表中刪除元素
1. 使用del語句刪除元素

如果知道要刪除的元素在列表中的位置,可使用del語句。


1 處的代碼使用del刪除了列表motorcycles中的第一個元素——'honda':

使用del可刪除任何位置處的列表元素,條件是知道其索引 .使用del語句將值從列表中刪除後,你就無法再訪問它了。
2. 使用方法pop()刪除元素
方法pop()可刪除列表末尾的元素,並讓你能夠接著使用它
下面從列表motorcycles中彈出一款摩托車:

我們首先定義並列印了列表motorcycles(見1)。接下來,我們從這個列表中彈出一個值,
並將其存儲到變量popped_motorcycle中(見2)。然後我們列印這個列表,以核實從其中刪除了
一個值(見3)。最後,我們列印彈出的值,以證明我們依然能夠訪問被刪除的值(見4)。
輸出表明,列表末尾的值'suzuki'已刪除,它現在存儲在變量popped_motorcycle中:

3. 彈出列表中任何位置處的元素
實際上,你可以使用pop()來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素
的索引即可。


輸出是一個簡單的句子,描述了我購買的第一輛摩托車:

每當你使用pop()時,被彈出的元素就不再在列表中了。


如果你不確定該使用del語句還是pop()方法,下面是一個簡單的判斷標準:如果你要從列表
中刪除一個元素,且不再以任何方式使用它,就使用del語句;如果你要在刪除元素後還能繼續
使用它,就使用方法pop()。

4. 根據值刪除元素
有時候,你不知道要從列表中刪除的值所處的位置。如果你只知道要刪除的元素的值,可使
用方法remove()。
例如,假設我們要從列表motorcycles中刪除值'ducati'。

1 處的代碼讓Python確定'ducati'出現在列表的什麼地方,並將該元素刪除:


使用remove()從列表中刪除元素時,也可接著使用它的值。
方法remove()只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要
使用循環來判斷是否刪除了所有這樣的值。

輸出:

3.3 組織列表
3.3.1 使用方法 sort()對列表進行永久性排序(按照字母順序排序)
Python方法sort()讓你能夠較為輕鬆地對列表進行排序(按照字母順序排序,a-z)。
我們假設該列表中的所有值都是小寫的 :

方法sort()(見)永久性地修改了列表元素的排列順序。現在,汽車是按字母順序排列的,
再也無法恢復到原來的排列順序:

你還可以按與字母順序相反的順序排列列表元素,為此,只需向sort()方法傳遞參數reverse=True。
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)

對列表元素排列順序的修改是永久性的


3.3.2 使用函數 sorted()對列表進行臨時排序 (按照字母順序)
要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函數sorted()。函數sorted()讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。


我們首先按原始順序列印列表(見),再按字母順序顯示該列表(見)。以特定順序顯示
列表後,我們進行核實,確認列表元素的排列順序與以前相同(見)。

調用函數sorted()後,列表元素的排列順序並沒有變(見)。如果你要按與字母順
序相反的順序顯示列表,也可向函數sorted()傳遞參數reverse=True。

3.3.3 倒著列印列表
要反轉列表元素的排列順序,可使用方法reverse()

reverse()不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排
列順序:

方法reverse()永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,為此
只需對列表再次調用reverse()即可。

3.3.4 確定列表的長度
使用函數len()可快速獲悉列表的長度。在下面的示例中,列表包含4個元素,因此其長度為4:

3.4 使用列表時避免索引錯誤
索引錯誤意味著Python無法理解你指定的索引。程序發生索引錯誤時,請嘗試將你指定的索
引減1,然後再次運行程序,看看結果是否正確。
別忘了,每當需要訪問最後一個列表元素時,都可使用索引-1。 僅當列表為空時,這種訪問最後一個元素的方式才會導致錯誤 。

關鍵字: