列表與元組、字典 1.列表list:["ele1","ele2","ele3","ele0"] 列表是一組任意類型的值,按照一定順序組合而成的;通過偏移存取;可變長度、異構以及任意嵌套;可變的序列;對象引用的數組 2.元組tuple:("alex","韓順平","金雲龍") 只讀的列表,兩個方法in ...
列表與元組、字典
1.列表list:["ele1","ele2","ele3","ele0"]
列表是一組任意類型的值,按照一定順序組合而成的;通過偏移存取;可變長度、異構以及任意嵌套;可變的序列;對象引用的數組
2.元組tuple:("alex","韓順平","金雲龍")
只讀的列表,兩個方法index()、count();通過偏移存取;不可變序列;固定長度、異構、任意嵌套;對象引用的數組
與list相比:1.比列表操作速度快 2.對數據“防寫” 3.可用於字元串格式化中 4.可作為字典的key
切片:(取多個元素)
1 str = ["你好","世界","hello","world",1,2] 2 print(str[1:4] ) #截取下標1至4之間的數據,包括1不包括4 3 #['世界', 'hello', 'world'] 4 print(str[1:-1]) #截取下標1至-1之間的數據,不包括-1 5 #['世界', 'hello', 'world', 1] 6 print(str[:1]) 7 #['你好']#取下標0-1 8 print(str[1:]) #取下標1-完 9 #['世界', 'hello', 'world', 1, 2] 10 print(str[0::2]) #隔一取一View Code
追加:append()
1 str=["alex","blue","sir"] 2 str.append("john") 3 print(str) 4 #['alex', 'blue', 'sir', 'john']View Code
插入:insert()
1 str=["a","b","c","d","e"] 2 str.insert(1,"1前")#大於列表長度時插在最後 3 print(str)View Code
修改:
1 str=["lucky","dog"] 2 str[1]="pig" 3 print(str) 4 #['lucky', 'pig']View Code
刪除:del str[index]/str.remove("obj")/str.pop()
1 str=["lucky","dog","love","me","love","dog"] 2 #del str[1] #刪除指定下標 3 #['lucky', 'love', 'me', 'love', 'dog'] 4 str.remove("dog") #刪除指定元素中的第一個 5 #['lucky', 'love', 'me', 'love','dog'] 6 #str.pop() #刪除最後一個元素 7 print(str)View Code
擴展:extend()
1 list1=["a","b","c"] 2 list2=[4,5,"6"] 3 list1.extend(list2) 4 print(list1) 5 #['a', 'b', 'c', 4, 5, '6']View Code
拷貝:copy()
1 list=["a","b","c"] 2 list_copy=list.copy() 3 print(list_copy)View Code
統計:list.count("ele")
排序與翻轉:list.sort()/list.reverse()
獲取下標:list.index("ele")
3.字典dict
一個關聯數組,是一個通過關鍵字索引的對象的集合,使用鍵-值(key-value)進行存儲,查找速度快;任意對象的無序集合;可變長、異構、任意嵌套;屬於可變映射類型;對象引用表
與list相比:1.查找和插入的速度快,不會隨著key的增加而增加 2.需要占用大量記憶體,記憶體浪費
而list:1.查找和插入的時間隨著元素的增加而增加 2.占用記憶體空間小,浪費少,所以dict是空間來換取時間的一種方法
語法:dict={"key1":"value1","key2":"value",...}
特性:dict無序的,key唯一所以去重
增加、修改、刪除:
1 dict={"001":"mouse","002":"ox","003":"tiger"} 2 dict.popitem()#刪除最後一個 3 del dict["001"] 4 dict.pop("002") 5 dict["004"]="rabbit"#增加 6 dict["004"]="dragon"#修改 7 print(dict)View Code
查找:
1 dict={"001":"mouse","002":"ox","003":"tiger"} 2 print("001" in dict) #標準用法 3 #True 4 print(dict.get("003")) 5 print(dict["002"])#同上,但如果一個key不存在,就報錯, 6 # get不會,不存在只返回NoneView Code
多級字典嵌套:
迴圈dict:
1 #方法1 2 for key in info: 3 print(key,info[key]) 4 5 #方法2 6 for k,v in info.items(): #會先把dict轉成list,數據里大時莫用 7 print(k,v)
4.集合set
無序的不重覆的數據集合,用於去除列表的“重”,測試兩組數據之間的關係:交集、並集、差集等
s1=set([1,2,3]) #創建一個集合有1,2,3三個元素 s2=set('hello') #創建一個唯一字元字元的集合'h','e','o','l' a=s1|s2 #並集 b=s1&s2 #交集set{} c=s1-s2 #差集{1, 2, 3} d=s1^s2 #對稱差集{'l', 1, 2, 3, 'h', 'o', 'e'} print(s1.issubset(d))#子集 #True print(s1.issuperset(s2))#超級#False s1.union(s2) #返回新集合-s1與s2的並集 s1.intersection(s2) #返回新集合-s1與s2的交集 s1.difference(s2) #返新集合差集,該集合是s1的成員 s1.symmetric_difference(s2)#返新集合-除了s1、s2共有的成員 s1.copy() #返新集合,是集合s1的淺複製 s1.update(s2) #用s2的元素修改s1 #{1, 2, 3, 'l', 'h', 'o', 'e'} s1.intersection_update(s2)#s1中的元素是屬於s1、s2共同的 #set{} s1.difference_update(s2)#{1,2,3}返回屬於s1但不屬於s2的元素 s1.symmetric_difference_update(s2)#{1, 2, 3, 'e', 'l', 'h', 'o'} s1.add(obj) s1.remove(s2) s1.discard() #刪除指定的 s1.pop() #刪除任意一個 s1.clear() #刪除所有 print(s1)
5.文件操作
打開文件的模式有:
- r,只讀模式(預設)。
- w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;】
- a,追加模式。【可讀; 不存在則創建;存在則只追加內容;】
"+" 表示可以同時讀寫某個文件
- r+,可讀寫文件。【可讀;可寫;可追加】
- w+,寫讀
- a+,同a
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示處理二進位文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進位文件時需標註)
- rb
- wb
- ab
with語句
為了避免打開文件後忘記關閉,可以通過管理上下文,即:
with open("yesterday","r+")as f: