- 列表是什麼
列表 是一系列按特定順序排列的元素組成。你可以創建包含字母表中所有的字母、數字0-9或所有家庭成員姓名的列表;也可以將任何東西加入列表中,其中的元素可以沒有任何關係。鑑於列表通常包含多個元素,給列表指定一個表示複數的名稱(如letters、digits或 names)是個不錯的選擇。
在Python中用([])表示列表,並用逗號來分隔其中的元素。例如:
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles)
- 訪問列表元素
列表是有序集合,因此要訪問到列表的任何元素,只需將該元素的位置或者索引告訴Python。要訪問列表元素,可指出列表的名稱,再指出元素的索引,並放在方括號中。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0]) # 返回第一個元素
print(bicycles[0][0]) # 返回第一個元素第一個字母
- 索引從 0 開始
在Python中,第一個元素的索引爲0,而不是1。這與列表底層實現有關。根據這種簡單的計數方式,要訪問列表的任何元素,都可將其位置減一,並將結果作爲索引。
Python爲方位最後一個元素提供了一種特殊的語法。通過將索引指定爲-1,可讓Python返回最後一個列表元素。
bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[-1]) # 返回最後一個元素
- 使用列表中的各值
可像使用其他變量一樣使用列表中的各值。
下面來嘗試從列表中提取第一款自行車,並使用這個值來創建一條消息:
bicycles = ['trek','cannondale','redline','specialized']
message = "My first bicycle was a "+bicycles[0].title() + "。"
print(message)
- 列表練習
namelist = ['Tom','Kilimanjaro','ZhangSan','LiSi']
message = [
'送你一個愜意的寧靜週末,願你的生活陽光燦爛,愛情柔風細雨,快樂永久長駐,事業欣欣向榮,投資歡欣與鼓舞,家人健康長壽,週末愉快!',
'注意,注意!今天天氣降溫,需多穿衣服,多喝水。我的提示沒有華麗的詞語,只是提醒大家多添衣多喝水。祝大家身體健康。']
for i in range (len(namelist)):
for j in range (len(message)):
print (i,j) # 打印所選擇的元素
print("Hello " + namelist[i]+ ' ' + message[j] +"。" ) # 打印對應語句
- 修改、添加、刪除元素
1、修改元素:
修改列表元素的語法與訪問列表元素的語法相似。要修改列表元素,可指定列表名和要修改的元素索引,再指定該元素的新值。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
# 根據元素索引進行修改
motorcycles[0] = 'ducati'
print(motorcycles)
2、添加元素
在列表中添加新的元素,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將添加到列表末尾。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
3、插入元素
使用insert() 方法可在列表的任何位置添加新元素。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles.insert(0,'ducati')
print(motorcycles)
- 刪除元素
1、使用del語句刪除元素
如果知道要刪除的元素在列表中的位置,可使用del語句;
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
# 添加元素
motorcycles.insert(0,'ducati')
print(motorcycles)
# 刪除元素
del motorcycles[0]
print(motorcycles)
2、使用pop() 刪除元素
方法pop() 可刪除列表末尾的元素,並讓你能夠接着使用它。術語彈出(pop)源自這樣的類比:列表就像 一個棧,而刪除列表末尾的元素相當於彈出棧頂元素。
motorcycles = ['honda','yamaha','suzuki']
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
3、彈出列表中任何位置處的元素
實際上,你可以使用pop() 來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素的索引即可。
motorcycles = ['honda','yamaha','suzuki']
frist_owned = motorcycles.pop(0)
print('The frist motorcycle I owned was a ' + frist_owned.title() + '。 ')
如果你不確定該使用del 語句還是pop() 方法,下面是一個簡單的判斷標準:如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用del 語句;如果你要在刪除元 素後還能繼續使用它,就使用方法pop() 。
4、根據值刪除元素
有時候,你不知道要從列表中刪除的值所處的位置。如果你只知道要刪除的元素的值,可使用方法remove() 。 例如,假設我們要從列表motorcycles 中刪除值'ducati' 。
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)
注意 方法remove() 只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用循環來判斷是否刪除了所有這樣的值。你將在第7章學習如何這樣做。
- 組織列表
在你創建的列表中,元素的排列順序常常是無法預測的,因爲你並非總能控制用戶提供數據的順序。這雖然在大多數情況下都是不可避免的,但你經常需要以特定的順序呈現信 息。有時候,你希望保留列表元素最初的排列順序,而有時候又需要調整排列順序。Python提供了很多組織列表的方式,可根據具體情況選用。
- 使用方法sort()對列表進行永久性排序
Python方法sort() 讓你能夠較爲輕鬆地對列表進行排序。假設你有一個汽車列表,並要讓其中的汽車按字母順序排列。爲簡化這項任務,我們假設該列表中的所有值都是小寫的。
cars = ['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
方法sort() 永久性修改了列表元素的排序順序。
按與字母順序相反的順序排列列表元素,爲此,只需向sort() 方法傳遞參數reverse=True 。下面的示例將汽車列表按與字母順序相反的順序排列:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
- 使用函數sorted() 對列表進行臨時排序
要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函數sorted() 。函數sorted() 讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排 列順序。 下面嘗試對汽車列表調用這個函數。
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
- 倒着打印列表
要反轉列表元素的排列順序,可使用方法reverse() 。假設汽車列表是按購買時間排列的,可輕鬆地按相反的順序排列其中的汽車:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
注意,reverse() 不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排列順序:
方法reverse() 永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,爲此只需對列表再次調用reverse() 即可。
- 確定列表長度
使用函數len() 可快速獲悉列表的長度。在下面的示例中,列表包含4個元素,因此其長度爲4:
cars = ['bmw', 'audi', 'toyota', 'subaru']
len(cars)
- 使用列表時避免索引錯誤
剛開始使用列表時,經常會遇到一種錯誤。假設你有一個包含三個元素的列表,卻要求獲取第四個元素:
Traceback (most recent call last):
File "motorcycles.py", line 3, in <module>
print(motorcycles[3])
IndexError: list index out of range