【Python3.7學習筆記】四、列表
學習筆記目錄
【Python3.7學習筆記】一、環境搭建
【Python3.7學習筆記】二、第一個python程序
【Python3.7學習筆記】三、變量和簡單數據類型
【Python3.7學習筆記】四、列表
【Python3.7學習筆記】五、字典
目錄
列表
列表由一系列按特定順序排列的元素組成。python使用[]來表示列表,並用逗號來分隔其元素。例如:
# 自行車列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
輸出結果:
[‘trek’, ‘cannondale’, ‘redline’, ‘specialized’]
訪問列表元素
列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python解釋器即可。將索引號放入方括號中。各式:列表名[索引],例如:
# 自行車列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
輸出結果:
trek
列表索引
- python,索引從0開始
# 自行車列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
# 訪問列表元素,使用下標訪問,索引從0開始而不是1開始
print(bicycles[0])
print(bicycles[1])
print(bicycles[3])
輸出結果:
trek
cannondale
specialized
- 特殊語法
python爲訪問最後一個列表元素提供了一種特殊語法。通過將索引指定爲-1,可讓python返回最後一個列表元素,這種語法很有用,因爲你經常需要在不知道列表長度的情況下訪問最後的元素。這種約定也適用於其他負數索引,例如,索引-2返回倒數第二個列表元素,索引-3返回倒數第三個列表元素,以此類推
# 最後的元素
print(bicycles[-1])
# 倒數第二個元素
print(bicycles[-2])
# 倒數第三個元素
print(bicycles[-3])
修改列表元素
修改列表元素的語法和訪問列表元素的語法類似。各式:列表名[索引]=新值,如:
# 修改元素
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
motocycles[0] = 'ducati'
print(motocycles)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘ducati’, ‘yamaha’, ‘suzuki’]
添加元素到列表
使用append()在列表末尾添加元素
在列表中添加新元素時,最簡單的方式是將元素添加到列表末尾。例如:
# 1、使用append()方法在列表末尾增加一個元素
motocycles = ['honda', 'yamaha', 'suzuki']
motocycles.append('ducati')
print(motocycles)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
append()能動態的創建列表,如下:先創建一個空列表,然後添加元素。
motocycles = []
motocycles.append('honda')
motocycles.append('yamaha')
motocycles.append('suzuki')
motocycles.append('ducati')
print(motocycles)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
使用insert()在列表的任何位置添加元素
使用insert()方法可在列表的任何位置添加元素。只需要指定新元素的索引和值。
# 2、使用方法insert()可在列表的任何位置添加新元素。
# 爲此,你需要指定新元素的索引和值
motocycles = ['honda', 'yamaha', 'suzuki']
motocycles.insert(0,'ducati')
print(motocycles)
輸出結果:
[ ‘ducati’,’honda’, ‘yamaha’, ‘suzuki’]
從列表刪除元素
使用del()刪除元素
使用del()函數刪除元素,只需提供元素在列表中的位置索引即可,如:
# 1、使用del語句刪除元素,
# 如果知道要刪除的元素在列表中的位置,
# 可使用del語句
motocycles = ['honda', 'yamaha', 'suzuki']
del motocycles[0]
print(motocycles)
輸出結果:
[ ‘yamaha’, ‘suzuki’]
使用pop()刪除元素
方法pop()可刪除列表末尾的元素,並能繼續使用它的值,類似與,彈出棧頂元素,如:
# 2、使用pop()刪除元素,
# 方法pop()可刪除列表末尾的元素,
# 並讓你能夠接着使用它
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
popped_motocycle = motocycles.pop()
print(motocycles)
print(popped_motocycle)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘honda’, ‘yamaha’]
suzuki
使用pop()刪除任何位置的元素
值需要提供刪除元素的索引即可,如:
# 3、彈出列表中任何位置的元素
motocycles = ['honda', 'yamaha', 'suzuki']
print("11")
print(motocycles)
first_owned = motocycles.pop(1)
print(motocycles)
second_owned = motocycles.pop(0)
print("22")
print(motocycles)
print("first_owned=="+first_owned)
print("second_owned=="+second_owned)
輸出結果:
11
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘honda’, ‘suzuki’]
22
[‘suzuki’]
first_owned==yamaha
second_owned==honda
當你使用pop()時,被彈出的元素就不在列表中了,如果你不能確定該使用del()還是pop(),判斷標準:
- 如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用del()
- 如果你要做刪除元素後還能繼續使用它,就使用pop()
使用remove()根據值刪除元素
有時候,你不知道要從列表中刪除的值所處位置。如果你只知道要刪除元素的值,可使用方法remove(),如:
# 4、根據值刪除元素
# 如果你不知道要從列表中刪除的值所處的位置。
# 如果你只知道要刪除的元素的值,
# 可使用方法remove()
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motocycles)
motocycles.remove('ducati')
print(motocycles)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’]
使用remove()從列表中刪除元素時,也可接着使用它的值,如:
# 使用remove()從列表中刪除元素時,也可接着使用它的值
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motocycles)
too_expensive = 'ducati'
motocycles.remove(too_expensive)
print(motocycles)
print("\nA "+too_expensive+" is too expensive for me!")
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’]
A ducati is too expensive for me!
注意:方法remove()只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用循環來判斷是否刪除了所有這樣的值。
使用sort()對列表進行永久性排序
假設你有一個汽車列表,並要讓其中的汽車按字母順序排列,如:
# 方法sort()對列表進行排序
# 假設你有一個汽車列表,並要讓其中的汽車按字母順序排列。
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
輸出結果:
[‘audi’, ‘bmw’, ‘subaru’, ‘toyota’]
可以按與字母順序相反的順序排列列表元素,爲此,只需向sort()方法傳遞參數reverse=True 如:
# 可以按與字母順序相反的順序排列列表元素,
# 爲此,只需向sort()方法傳遞參數reverse=True
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
輸出結果:
[‘toyota’, ‘subaru’, ‘bmw’, ‘audi’]
使用sorted()對列表進行臨時性排序
使用函數sorted()對列表進行臨時排序,不影響列表原始順序,如:
# 使用函數sorted()對列表進行臨時排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
print(sorted(cars))
print(cars)
輸出結果:
[‘bmw’, ‘audi’, ‘toyota’, ‘subaru’]
[‘audi’, ‘bmw’, ‘subaru’, ‘toyota’]
[‘bmw’, ‘audi’, ‘toyota’, ‘subaru’]
使用reverse()反轉列表
要反轉列表元素的排列順序,可使用方法reverse(),如:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
輸出結果:
[‘bmw’, ‘audi’, ‘toyota’, ‘subaru’]
[‘subaru’, ‘toyota’, ‘audi’, ‘bmw’]
注意:reverse()不是指按與字母順序相反的順序排列列表原始,而只是反轉列表元素的排列順序,方法reverse()永久性的修改列表元素的排列順序,但是可隨時恢復到原來的排列順序,爲此再次調reverse()方法即可。
使用len()計算列表長度
使用len()計算列表長度,如:
# 列表的長度
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print("cars列表的長度:"+str(len(cars)))
輸出結果:
cars列表的長度:4
遍歷列表
循環列表
# 遍歷列表
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
for motocycle in motocycles:
print(motocycle)
輸出結果:
honda
yamaha
suzuki
ducati
避免縮進錯誤
python根據縮進來判斷代碼行與前一個代碼行的關係。通過縮進讓代碼更易讀;縮進使得代碼整潔而結構清晰。
忘記縮進
如果忘記縮進,python解釋器會提供一個traceback信息,提示縮進
忘記縮進額外的代碼行
忘記縮進會導致邏輯錯誤
不必要的縮進
如果你不小心縮進了不需要縮進的代碼,python解釋器會提示traceback信息
遺漏了冒號
for語句末尾的冒號告知python,下一行是循環的第一行
數值列表
使用函數range()
python函數range()能生成一系列的數字。
for value in range(1,5):
print(value)
輸出結果:
1
2
3
4
使用range()函數創建數字列表
函數list()將range()的結果直接轉換爲列表
numbers = list(range(1,5))
print(numbers)
輸出結果:
[1, 2, 3, 4]
對數字列表進行統計計算
numbers = list(range(1,6))
print(numbers)
print(max(numbers))
print(min(numbers))
print(sum(numbers))
輸出結果:
[1, 2, 3, 4, 5]
5
1
15
列表解析
numbers = list(range(1,11))
print(numbers)
squares = [value**2 for value in range(1,11)]
print(squares)
輸出結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
使用列表的一部分
切片
要創建切片,可指定第一個元素的索引和最後一個元素的索引+1
# 要創建切片,可指定第一個元素的索引和最後一個元素的索引+1
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
# 包含0,1,2索引元素
print(motocycles[0:3])
# 包含1,2索引元素
print(motocycles[1:3])
# 包含0,1,2,3索引元素
print(motocycles[0:4])
# 包含1,2,3索引元素
print(motocycles[1:4])
# 包含0,1,2,3索引元素
print(motocycles[:4])
# 包含0,1,2索引元素
print(motocycles[:3])
# 索引從2開始元素
print(motocycles[2:])
# 包含倒數1元素
print(motocycles[-1:])
# 包含倒數2個元素
print(motocycles[-2:])
# 包含倒數3個元素
print(motocycles[-3:])
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘yamaha’, ‘suzuki’]
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘suzuki’, ‘ducati’]
[‘ducati’]
[‘suzuki’, ‘ducati’]
[‘yamaha’, ‘suzuki’, ‘ducati’]
遍歷切片
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
for motocycle in motocycles[:4]:
print(motocycle)
輸出結果:
honda
yamaha
suzuki
ducati
複製列表
motocycles = ['honda', 'yamaha', 'suzuki', 'ducati']
# 使用切片拷貝整個列表
motocycles_copy = motocycles[:]
# 使用copy方法拷貝列表
motocycles_copy2 = motocycles.copy()
print(motocycles_copy)
print(motocycles_copy2)
輸出結果:
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
元組
列表適合於存儲在程序運行期間可能變化的數據集。列表是可修改的。
python將不能修改的列表稱爲元組,使用圓括號括起來。可以使用索引訪問值
定義元組
dimension = (200,50)
print(dimension[0])
print(dimension[1])
輸出結果:
200
50
遍歷元組
dimensions = (200,50)
for dimension in dimensions:
print(dimension)
輸出結果:
200
50
修改元組變量
dimensions = (200,50)
print("old dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (100,100)
print("new dimensions:")
for dimension in dimensions:
print(dimension)
輸出結果:
old dimensions:
200
50
new dimensions:
100
100
不能修改元組中得值,但是可以給元組變量重新賦值
歡迎大家一起交流討論