python基礎系列之列表知識點
前言:
此文爲本人在學習python過程中,整理出來的學習筆記。主要參考書目有:
1、《python編程:從入門到實踐》;
2、《python學習手冊》;
3、《像計算機科學家一樣思考Python》
一 列表簡介
列表可以包含任何種類的對象:數字,字符串,列表及字典等。與字符串不同的是列表爲‘可變序列’,支持在原處修改的操作。
python列表具有以下特性:
- 是任意對象的有序集合;
- 可通過偏移來對內部進行索引;
- 可變長度,異構以及任意嵌套;
- 屬於可變序列的分類;
- 對象引用數組
二 列表基本操作
列表的常用操作:
1 列表的創建
#可直接通過中括號的方式來創建一個列表
list1 = [1,2,3,4,5]
#也可利用list函數來將字符串轉化爲列表
strr = '1234'
list2 = list(strr)
print(list2)
#運行結果爲:['1', '2', '3', '4']
#列表內元素個數
print(len(list1))
#運行結果爲:5
列表的算數運算符操作:
list1 = [1,2,3,4,5]
list2 = [1,2,3]
list3= list1 + list2
print(list3)
#運行結果:[1, 2, 3, 4, 5, 1, 2, 3]
lst = ['hello']
print(lst * 4) # 列表中的元素累加,而不是列表個數的累加!
#運行結果:['hello', 'hello', 'hello', 'hello']
列表支持 + 及 * 運算但不支持 - 及 / 運算
2 列表迭代與解析
2.1 for 與 in
list1 = ['1', '2', '3', '4']
print('2' in list1) # in 返回布爾值 True or False
#運行結果爲:True
for number in list1:
print(number,end = ' ')
#運行結果爲:1 2 3 4
2.2 列表解析
在後面將會以專門章節展開介紹,以下只做簡單介紹:
repeat = [word * 4 for word in '你好啊']
print(repeat)
#運行結果爲:['你你你你', '好好好好', '啊啊啊啊']
上述操作其實相等於創建了一個完整的for循環語句,代碼爲:
repeat = [] #先創建一個空列表
for word in '你好啊':
repeat.append(word * 4) #append函數爲在列表內增加元素
print(repeat)
#運行結果爲:['你你你你', '好好好好', '啊啊啊啊']
3索引,分片和矩陣
列表與字符串都爲有序序列,故在索引和分片(也叫切片)操作上與字符串索引,分片操作基本相同。
foods = ['雞胸肉','鴨腿肉','豬肉','牛肉']
print(foods[0]) #與字符串一樣第一個元素位數爲0
#運行結果爲:雞胸肉
#其他切片操作可參考本系列博客的字符串學習內容
#注意列表中嵌套內容的索引
words = ['a','b',[1,2,3],'c']
print(words[2][0])
#運行結果:1
與字符串不同的是列表屬於可變序列,可直接對其進行索引後賦值(不用像字符串需要藉助利用變量才能進行更改操作)。如:
foods = ['雞胸肉','鴨腿肉','豬肉','牛肉']
foods[1] = '魚肉'
print(foods)
#運行結果爲:['雞胸肉', '魚肉', '豬肉', '牛肉']
對列表的多個元素值進行改變:
numbers = [1,2,3,4,5,6]
numbers[0:2] = [7,8]
print(numbers)
#運行結果:[7, 8, 3, 4, 5, 6]
注意列表切片賦值:切片個數不一定要等於賦值個數,如下面代碼所示:
matrix = [0,1,2,3,4,5]
matrix[0:2] = [6]
print(matrix)
#運行結果:[6, 2, 3, 4, 5]
列表切片賦值,可以理解爲先對列表進行刪除,然後在被刪除位置上開始插入。
所以也可用切片的方法來刪除列表中的元素:
matrix = [0,1,2,3,4,5]
matrix[0:2] = []
print(matrix)
#運行結果:[2, 3, 4, 5]
可以根據列表能進行嵌套的原理來形成簡單的矩陣:
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
print(matrix[1][1])
#運行結果:5
三 列表方法調用
1 append 方法
append方法,用於在列表末尾增加元素:
matrix = [0,1,2,3,4,5]
matrix.append(6)
print(matrix)
#運行結果:[0, 1, 2, 3, 4, 5, 6]
append方法也常被用來新建列表:
matrix = []
for number in range(0,6):
matrix.append(number)
print(matrix)
#運行結果:[0, 1, 2, 3, 4, 5]
2 sort方法
sort函數用來對列表進行簡單的排序:
matrix = [5, 2, 6, 1, 3, 4]
matrix.sort()
print(matrix)
#運行結果:[1, 2, 3, 4, 5, 6]
注意list.sort()方法無返回值!!(嚴格的說返回值爲 None)
以下是其錯誤用法,請注意:
matrix = [5, 2, 6, 1, 3, 4]
print(matrix.sort())
#運行結果爲:None
也可對字符串等列表進行排序:
words = ['b', 'd', 'a', 'c', 'f', 'e']
words.sort()
print(words)
#運行結果:['a', 'b', 'c', 'd', 'e', 'f']
反向排序,利用內置參數 reverse = True 來實現:
words = ['b', 'd', 'a', 'c', 'f', 'e']
words.sort(reverse = True)
print(words)
#運行結果:['f', 'e', 'd', 'c', 'b', 'a']
3 extend方法
extend方法也是用來在列表末尾增加元素,但是要注意其與append用法的不同,append()方法括號內添加的可以是:數字,字符,變量,列表等,凡是extend()方法,添加的只能是列表,而且增加列表的方式也有所不同,如:
matrix = [0,1,2,3]
matrix.extend([4,5])
print(matrix)
#運行結果:[0, 1, 2, 3, 4, 5]
matrix = [0,1,2,3]
matrix.append([4,5])
print(matrix)
#運行結果:[0, 1, 2, 3, [4, 5]]
4 pop、remove、del方法
pop,remove,del方法都可以用來刪除列表中的元素,但是三者各有各的功效:
4.1 pop方法 刪除列表中的元素
matrix = [0,1,2,3,4,5,6]
matrix.pop() #方法內部不傳入參數,則默認刪除最後一位
print(matrix)
#運行結果:[0, 1, 2, 3, 4, 5]
用來刪除指定位元素:
matrix = [1,2,3,4,5,6]
matrix.pop(1) #刪除的是1位的元素!
print(matrix)
#運行結果:[1, 3, 4, 5, 6]
4.2 remove方法 刪除列表中的元素
remove 方法則是用來刪除指定元素,如:
matrix = [1,2,3,4,5,6]
matrix.remove(1) #是刪除1,而不是1位的元素,remove方法內必須傳入參數
print(matrix)
#運行結果:[2, 3, 4, 5, 6] #注意以上面代碼結果的不同之處
remove方法無返回值
matrix = [1,2,3,4,5,6]
number = matrix.remove(1)
print(number)
#運行結果:None
pop方法有返回值
matrix = [1,2,3,4,5,6]
number = matrix.pop(1)
print(number)
#運行結果:2
從上述實驗中可發現,pop與remove方法的不同之處有:
pop方法刪除列表特定位的元素(不輸入,則默認刪除最後一位)
remove方法刪除列表中特定元素
pop方法有返回值(之後可再次調用),remove無返回值
4.3 del 方法
matrix = [1,2,3,4,5,6]
del matrix[0]
print(matrix)
#運行結果:[2, 3, 4, 5, 6]
也可用來刪除列表內多個元素:
matrix = [1,2,3,4,5,6]
del matrix[0:3]
print(matrix)
#運行結果:[4, 5, 6]
5 insert 方法
在列表中插入元素:
matrix = [1,2,3,4,5,6]
matrix.insert(0,7) #0爲插入點,7爲插入值
print(matrix)
#運行結果:[7, 1, 2, 3, 4, 5, 6]
6 index方法
index方法爲獲取列表中元素的位置:
matrix = [1,2,3,4,5,6]
print(matrix.index(4))
#運行結果:3
7 max函數
max函數可用來對列表取最大值操作,如:
matrix = [1,2,3,4,5,6]
print(max(matrix))
#運行結果爲:6
8 列表的複製
matrix = [1,2,3,4,5,6]
matrix_2 = matrix[:]
print(matrix_2)
#運行結果:[1, 2, 3, 4, 5, 6]
不要用下面這種方式來嘗試複製列表:
matrix = [1,2,3,4,5,6]
matrix_3 = matrix #此種方式相當於將matrix和matrix_3兩個變量指向了同一個列表,而不是複製該列表。
matrix.pop() #即如對該列表進行操作時,matrix_3也會改變
print(matrix_3)
#運行結果:[1, 2, 3, 4, 5]