Task 4: 列表、元組和字串(3天)
一、列表
1.列表的定義
2.列表的建立
3.向列表新增元素
4.刪除列表中的元素
5.獲取列表中的元素
6.列表的常用操作符
7.列表的其他方法
正文
一、列表
1.列表的定義
列表(list):有序集合,可以隨時新增和刪除其中的元素
#中括號[]把所有元素放在一起,逗號,將每個元素分開
[元素1, 元素2, ..., 元素n]
2.列表的建立
#元素是字元型別 x=['monday','tuesday','wednesday','thursday','friday'] print(x,type(x)) #元素是int x=[1,2,3,4] print(x,type(x))#使用range()建立list x=list(range(10)) #利用推導式建立list x=[0]*5 #[0, 0, 0, 0, 0] x=[0 for i in range(5)] #列表生成器 #建立一個4x3的二維陣列 x=[[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]] #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] x=[[0 for col in range(3)] for row in range(4)] #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] x=[[0]*3 for row in range(4)]
list的元素可以是任何物件,list所儲存的是物件的指標
列表不像元組,列表內容可更改 (mutable),因此附加 (append
,extend
)、插入 (insert
)、刪除 (remove
,pop
) 這些操作都可以用在它身上
3.向列表中新增元素
list.append(obj):在list末尾新增新的物件,只接受一個採納數,引數可以是任意資料型別
#appned() x=[1,2,3] x.append(1) #[1, 2, 3, 1] x.append('a') #[1, 2, 3, 1, 'a'] #如果元素是一個list,那麼這個list將作為一個整體進行追加 x.append([1,2,3]) #[1, 2, 3, 1, 'a', [1, 2, 3]]
list.extend(sed):在列表末尾一次性追加另一個序列(可迭代物件iterable)中的多個值(用新列表擴充套件原來的列表)
#extend(),裡面是一個可迭代物件,字串或者list,tuple,dict 等 x=[1,2,3] x.extend(1) #TypeError: 'int' object is not iterable x.extend('a') #[1, 2, 3, 'a'] x.extend([1]) # [1, 2, 3, 'a', 1] x.extend((1)) #TypeError: 'int' object is not iterable,單個元素時,tuple要加上,號才能構成tuple x.extend((1,)) #[1, 2, 3, 'a', 1, 1] x.extend({'a':1,'b':2}) #[1, 2, 3, 'a', 1, 1, 'a', 'b'] x.extend([1,2,3]) #[1, 2, 3, 'a', 1, 1, 'a', 'b', 1, 2, 3]
list.insert(index,obj):在編號index位置插入obj
#insert() x=[1,2,3] x.insert(0,1) #在index為0的位置插入1 [1, 1, 2, 3] x.insert(1,[1,2,3]) #插入list [1, [1, 2, 3], 1, 2, 3] x.insert(1,(1,2,3)) #插入tuple [1, (1, 2, 3), [1, 2, 3], 1, 2, 3] x.insert(1,{'a':1,'b':2}) #[1, {'a': 1, 'b': 2}, (1, 2, 3), [1, 2, 3], 1, 2, 3] x.insert('a') #報錯,要輸入2個引數
4.刪除列表中的元素
list.remove(obj):移除list中某個值的第一個匹配值
#remove(),如果list表沒有這個元素將會報錯 x=[1,2,3,1,2,3] x.remove(1) #[2, 3, 1, 2, 3] x.remove(4) #ValueError: list.remove(x): x not in list #remove是精準匹配,不是模糊匹配 x=['as','aa','b','a'] x.remove('a') #['as', 'aa', 'b']
list.pop(index):刪除指定索引的元素,預設是最後一個元素,並且返回該元素的值
#pop ,index不能超出索引 x=[1,2,3,1,2,3] x.pop() #預設刪除最後一個元素 [1, 2, 3, 1, 2] x.pop(1) #[1, 3, 1, 2] x.pop(100) #IndexError: pop index out of range
del :刪除單個或者多個物件
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] del x[0:2] print(x) # ['Wednesday', 'Thursday', 'Friday']
總結:
remove和 pop都可以刪除元素,前者是指定具體要刪除的元素,後者是指定一個索引
如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用del
語句;如果你要在刪除元素後還能繼續使用它,就使用方法pop()
5.獲取列表中的元素
(1)通過元素的索引值,從列表獲取單個元素,注意,列表索引值是從0開始的
(2)通過將索引指定為-1,可讓Python返回最後一個列表元素,索引 -2 返回倒數第二個列表元素,以此類推
x=[1,2,3] x[0] #輸出1 x[-1] #3 x[-2] #2
切片的通用寫法:記住,都是左閉右開
start:stop:step
(1) start :
(2) : stop
(3) start : stop
(4) start : stop : step
(5) :
x=['as','aa','b','a'] x[2:] #['b', 'a'] x[-2:] #['b', 'a'] x[:2] #['as', 'aa'] x[:-2] #['as', 'aa'] x[1:3] #['aa', 'b'] x[-1:-3] #[] ,如果都是負的要重小到大 x[1:-1] #['aa', 'b'] x[-3:-1] #['aa', 'b'] x[1:3:2] #['aa'] x[:2:2] #['as'] x[1::2] #['aa', 'a'] x[::-1] #['a', 'b', 'aa', 'as'] 從後面取起 x[:] #['as', 'aa', 'b', 'a'] 複製整個list x[] #SyntaxError: invalid syntax
6.列表的常用操作符
1 等號操作符:== 2 連線操作符 + 3 重複操作符 * 4 成員關係操作符 in、not in
「等號 ==」,只有成員、成員位置都相同時才返回True。
列表拼接有兩種方式,用「加號 +」和「乘號 *」,前者首尾拼接,後者複製拼接
x=[1,2,3] y=[1,2,3] x==y #True x[::-1]== #False 需要元素和對應的位置都一樣 x+y #[1, 2, 3, 1, 2, 3] x*3 #[1, 2, 3, 1, 2, 3, 1, 2, 3] a in x #False 1 in x #True [1,2] in x #False 注意要是元素 1 not in x #False
前面三種方法(append
,extend
,insert
)可對列表增加元素,它們沒有返回值,是直接修改了原資料物件
而操作符運算都沒有改變原資料
7.列表的其他方法
list.count(obj) :統計某個元素在列表中出現的次數
list中沒有該元素,則返回0
x=[1,2,3]*3 x.count(1) #3 x.count(4) #沒有的元素,則返回0
list.index(x[,start[,end]]):找到某個元素第一個匹配項的索引位置
#如果該元素不在list中,則報錯 x=[1,2,3]*5 x.index(1) #0 x.index(1,1) # 3 x.index(1,3,7) #3 x.index(4) #報錯ValueError: 4 is not in list
list.reverse():反向list中的元素
#不返回值,但是已經改變原資料的值 x=[1,2,3] x.reverse() #[3, 2, 1]
list.sort(key=None,reverse=False):對原list進行排序
1 key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。 2 reverse -- 排序規則,reverse = True 降序, reverse = False 升序(預設)。 3 該方法沒有返回值,但是會對列表的物件進行排序
x=[1,2,3]*3 x.sort() #[1, 1, 1, 2, 2, 2, 3, 3, 3] x.sort(reverse=True) #[3, 3, 3, 2, 2, 2, 1, 1, 1] def takeSecond(elem): return elem[1] x = [(2, 2), (3, 4), (4, 1), (1, 3)] x.sort(key=takeSecond) #將第二個元素放在前面 x.sort(key=lambda a: a[0])