python基礎中的列表、元組、字典屬於python中內置的序列數據結構。其中序列可以進行的操作包括索引、截取(切片)、加、乘、成員檢查等。
1、列表
列表(list)是最常用的python數據類型之一,列表的數據項不需要具有相同的類型。創建一個列表,只需要把用逗號分隔開的不同數據項使用方括號[]括起來即可。創建列表實例如下:
list1 = ["test","測試",1997,2000]; list2 = [1,2,3,4,5,6]; list3 = ["a","b","c","d"];
列表的索引是從0開始,列表可以進行截取(切片)、組合。
一、訪問列表的元素
訪問的方式可以是通過下標索引,也可以是以方括號的形式截取字符。
1 list1 = ["test","測試",2018,2019,]; 2 list2 = [1,2,3,4,5,6]; 3 print("list1[0]:",list[0]) 4 print("list2[1:5]:",list2[1:5])
以上實例輸出的結果為:
1 list1[0]: test 2 list2[1:5]: [2,3,4,5]
二、增加列表中的元素
使用append()方法在列表的末尾增加新的元素。
1 list1 = ["test","測試",2018,2019,]; 2 list1.append(2020) 3 print(list)
以上實例輸出的結果為:
1 ["test","測試",2018,2019,2020]
三、修改列表中的元素
實例如下:
1 list1 = ["test","測試",2018,2019,]; 2 print("修改前的列表元素:",list1) 3 list1[2] = 2017; #將列表中索引為2的元素修改為2017 4 print("修改后的列表元素:",list2)
以上實例執行后的結果為 :
1 修改前的列表元素:["test","測試",2018,2019,] 2 修改后的列表元素:["test","測試",2017,2019,]
四、刪除列表中的元素
方法一:使用del語句來刪除列表的元素,實例如下:
1 list1 = ["test","測試",2018,2019,]; 2 print(list1) 3 del list1[2] 4 print("刪除索引為2的元素后的列表:",list1)
以上實例執行后展示的結果為:
1 ["test","測試",2018,2019,] 2 ["test","測試",2019,]
方法二:使用remove()方法來刪除列表中的元素,實例如下:
1 list1 = ["test","測試",2018,2019,]; 2 list1.remove(2018) 3 list1.remove("測試") 4 print("刪除部分元素后的列表:"list1)
以上實例執行后展示的結果為:
1 ["test",2019,]
方法三:使用pop()方法來刪除列表中的指定位置的元素,無參數時默認刪除最后一個元素,實例如下:
1 list1 = ["test","測試",2018,2019,]; 2 list1.pop(1) #刪除位置1的元素 測試 3 list1.remove() #刪除最后一個元素 2019 4 print("刪除部分元素后的列表:",list1)
以上實例執行后展示的結果為:
1 ["test",2018]
五、列表的其他操作符
列表對“+”和“*”的操作符與字符串相似。+號用於組合列表,*用於重復列表。其操作符如下:
python表達式 | 描述 | 結果 |
len([1,2,3]) | 長度 | 3 |
[1,2,3]+[4,5,6] | 組合 | [1,2,3,4,5,6] |
["ha"]*4 | 重復 | ["ha","ha","ha","ha"] |
3 in [1,2,3] | 元素是否在列表中 | True |
for x in [1,2,3]:print(x,end="") | 迭代 | 1 2 3 |
六、python列表內置函數和方法
方法 | 功能 |
list.append(obj) | 在列表的末尾添加新的元素 |
list.count(obj) | 統計某個元素在列表中出現的次數 |
list.extend(seq) | 在列表末尾一次性追加另一個序列中的多個值 |
list.index(obj) | 從列表中找出某個值第一個匹配項的索引位置 |
list.insert(index,obj) | 將元素插入到列表中的指定位置 |
list.pop(index) | 移除列表中的指定位置的元素,不指定位置時默認移除最后一個 |
list.remove(obj) | 移除列表中某個值的第一個匹配項 |
list.reverse() | 反轉列表中的元素的位置 |
list.sort([func]) | 對原列表進行排序 |
len(list) | 內置函數,列表中元素的個數 |
max(list) | 內置函數,返回列表中元素的最大值 |
min(list) | 內置函數,返回列表中元素的最小值 |
list(seq) | 內置函數,將元組轉換成列表 |
2、元組
元組的與列表類似 ,但是也有不同,不同之處在於元組中的元素不能修改。元組使用小括號(),列表使用方括號[],元組中的元素類型也是可以不同的。
一、創建元組
可以通過直接在括號中添加元素,並使用逗號隔開即可。實例如下:
1 tup1 = ("test","測試",2018,2019) 2 tup2 = (1,2,3,4,5,6) 3 tup3 = "a","b","c","d"
4 tup4 = () #創建空元組
當元組中只有一個元素時需要在元素后邊添加逗號,實例如下:
1 tup5 = (20,)
在元組中下標索引同樣是從0開始,可以進行截取,組合等操作。
二、訪問元組
可以通過下標索引來訪問元組中的元素,實例如下:
1 tup1 = ("test","測試",2018,2019) 2 tup2 = (1,2,3,4,5,6) 3 print("tup1[0]:",tup1[0]) #輸出元組中第一個元素
4 print("tup2[1:5]:",tup2[1:5]) #切片,輸出從第二個元素開始到第5個元素
5 print("tup2[2:]:",tup2[2:]) #切片,輸出從第三個元素開始的以后的所有元素
6 print(tup2 * 2) #輸出元組元素兩次
以上實例輸出的結果展示如下:
1 tup1[0]: 中國 2 tup2[1:5]: (2,3,4,5) 3 (3,4,5,6) 4 (1,2,3,4,5,6,1,2,3,4,5,6)
三、連接元組
元組是不能直接修改,但是可以創建新元組,實例如下:
1 tup1 = (10,20,30) 2 tup2 = (100,200) 3 tup3 = tup1 + tup2 4 print(tup3)
以上實例輸出的結果展示如下:
(10,20,30,100,200)
四、刪除元組
元組中的元素不允許被直接刪除,但是可以通過del語句來刪除整個元組,實例如下:
1 tup1 = ("test","測試",2018,2019) 2 print(tup1) 3 del tup1 4 print("刪除元組tup1后的結果為:",tup1)
以上實例輸出的結果展示如下:
1 ("test","測試",2018,2019) 2 刪除元組tup1后的結果為:NameError:name "tup1" is not defined
由上可見,刪除元組后在輸出會報錯。根據報錯信息看出,名字為tup1的元組不存在
五、元組運算符
與字符串一樣,元組之間可以使用+ 和*進行運算,意思就是可以進行組合和復制,運算后可以生成一個新的元組,其中操作符如下:
python表達式 | 描 述 | 結 果 |
len(1,2,3) | 計算元素個數 | 3 |
(1,2,3)+(4,5,6) | 連接 | (1,2,3,4,5,6) |
("a","b") * 3 | 復制 | ("a","b,"a","b"","a","b") |
3 in (1,2,3) | 元素是否存在 | True |
for x in (1,2,3):print(x,end="") | 遍歷元組 | 1 2 3 |
元組中包含的內置函數如下:
方法 | 描述 | 方法 | 描述 |
len(tuple) | 計算元組的元素個數 | min(tuple) | 返回元組中元素的最小值 |
max(tuple) | 返回元組中元素的最大值 | tuple(seq) | 將列表轉換為元組 |
對內置函數的使用實例如下:
1 tup1 = (56,12,45,75,85) 2 y = min(tup1) 3 print(y) #輸出的結果應該為12
注意:可以使用元組來一次性對多個變量進行賦值,如:
1 (x,y,z) = (1,2,3) 2 print(x,y,z)
如果想實現x,y的交換也是可以滴
1 y,x = 1,2
2 x,y = y,x 3 print(x,y) # 輸出的結果為 1,2
3、元組與列表的轉換
在實際中,元組、列表、字符串之間是可以相互轉換的,需要使用到的三個函數,str()、tuple()、list()
一、將元組轉換為列表
列表對象 = list(元組對象)
實例如下:
1 tup = (1,2,3) 2 list1 = list(tup) #將元組轉換為列表
3 print(list1) #此處輸出是[1,2,3]
二、將列表轉換為元組
元組對象 = tuple(列表對象)
實例如下:
1 nums = [1,2,3,4] 2 tup = tuple(nums) #將列表轉換為元組
3 print(tup) #此處應該輸出 (1,2,3,4)
三、將列表轉換為字符串
實例如下:
1 nums1 = [1,3,5,7,8,10] 2 str1 = str(nums1) #列表轉換成字符串,返回字符串:[1,3,5,7,8,10]
3 print(str1[2]) #打印出逗號,在字符串中索引為2的元素是逗號
4 nums2 = ["test","測試",100,200] 5 str2 = "%"
6 srt2 =str2.join(num2) #用百分號連接起來的字符串
7 str2 = ""
8 str2 = str2.join(num2) #用空字符連接起來的字符串
四、字典
python中字典是一種可變容器模型,且可存儲任意類型對象,如字符串、列表、元組、數字等。也被稱作是關聯數組或哈希表。
一、創建字典
字典由鍵和對應值組成(key=>value)成對組成。字典的每個鍵和對應的值之間用冒號隔開,鍵/值對之間用逗號隔開,整個字典用花括號{}括起來,基本語法如下:
1 d = {key1:value1,key2:value2}
注意:鍵必須是唯一的,但值不一定,值可以取任何數據類型,且鍵必須是不可變的,如字符串、數字、元組等。
字典實例:
1 dict = {"xmj":40,"zhan":91,"wang":80}
二、字典的特性:
1、字典值可以是任何python對象,如字符串、數字、元組等
2、不允許同一個鍵出現兩次,創建時如同一個鍵被兩次賦值,后一個值會被覆蓋前面得值。
3、鍵必須不可變,所以可以用數字,可以用數字、字符串、元組等 ,用列表就不可行。
三、訪問字典里的值
訪問字典里的值時把相應的鍵放入方括號中,實例如下:
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 print("dict["Name"]: ",dict["Name"]) 3 print("dict["Age"]: ",dict["Age"])
以上實例輸出的結果展示如下:
1 dict["Name"]: 測試 2 dict["Age"]: 20
如果訪問的值不存在則會報錯
四、修改字典元素
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 dict["Age"] = 30 # 更新字典中鍵為Age的值
3 dict["School"] = "中國大學" # 新增一個鍵和值
4 print("dict["Age"]: ",dict["Age"]) 5 print("dict["School"]: "dict["School"])
以上實例輸出的結果展示如下:
1 dict["Age"]: 30
2 dict["School"]: 中國大學
五、刪除字典元素
del() 方法允許使用鍵從字典中刪除元素。clear()方法清空字典中所有的元素。
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 del dict["Name"] #刪除字典中鍵為Name的元素
3 dict.clear() #清空字典中所有的元素
4 del dict #刪除字典,這樣操作后字典將不復存在
六、in運算
檢查某個值是否存在字典中。
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 print("Age" in dict) #等價於print(dict.has_key("Age")) 輸出結果為True
七、獲取字典中的所有值
values()以列表返回字典中所有的值,實例如下:
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 print(dict.values()) #返回的結果為 ["測試",20,"計算機一班"]
八、items()方法
items()方法把字典中每對key和value組成一個元組,並把這些元組放在列表中返回。
1 dict = {"Name":"測試","Age":20,"class":"計算機一班"} 2 for key,value in dict.items(): 3 print(key,value)
以上實例輸出的結果展示如下:
1 Name 測試 2 Age 20
3 class 計算機一班
注意:字典中的元素沒有順序之分,所有有時候打印出來的順序與重建之初的順序不一致,這不是錯誤。因為在存儲是自動做了優化,這樣的存儲於查詢的效率更高。
字典與列表的一個區別:列表中保持元素的相對關系,即序列關系;而字典中完全是無序的,所以是非序列。如果想要保持一個集合中元素的順序則需要使用列表而不是字典。
九、字典的內置函數與方法匯總
假設字典名稱為dict1
函數 | 描述 |
dict1.clear() | 刪除字典中所有的元素 |
dict1.copy() | 返回字典的副本,類似於復制 |
dict1.fromkeys(seq,value) | 創建一個新字典,以序列seq中的元素作為字典的鍵,以value中的值作為字典中的鍵對應的初始值 |
dict1.get(key,default=None) | 返回指定鍵的值 |
dict1.has_key(key) | 在python3.0以后此方法已經刪除 |
dict1.items() | 以列表返回可遍歷的(鍵,值)元組數據 |
dict1.keys() | 以列表返回字典所有的鍵 |
dict1.setdefault(key,default=None) | 和get()類似,但如果鍵不存在與字典中則會添加鍵並將值設為default |
dict1.update(dict2) | 把字典dict2的鍵/值更新為dict1中 |
dict1.values() | 以列表返回字典中的所有值 |
cmp(dict1,dict2) | 內置函數,比較兩個字典的元素 |
len(dict) | 內置函數,計算字典元素個數,既鍵的總數 |
str(dict) | 內置函數,輸出字典可打印的字符串表示 |
type(variable) | 內置函數,返回輸入的變量類型,如果變量是字典就返回字典類型。 |