1. 程式人生 > 實用技巧 >Task 4: 列表、元組和字串(3天)

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 成員關係操作符 innot 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])