集合類型:html
集合類型中的元素是惟一的!python
集合的定義與賦值:linux
1 set_1 = set([1, 3, 5, 7, 2]) 2 set_2 = set([2, 4, 6, 8, 3])
集合的運算操做shell
1 # 交集 2 print(set_1.intersection(set_2)) 3 # 並集 4 print(set_1.union(set_2)) 5 # 差集 6 print(set_1.difference(set_2)) 7 # 互相差的並集 8 print(set_1.symmetric_difference(set_2)) 9 # 無交集斷定 10 print(set_1.isdisjoint(set([9,11]))) 11 # 子集斷定 12 print(set([1,3]).issubset(set_1)) 13 # 父集斷定 14 print(set_1.issuperset(set([1,3])))
集合的增刪改查:編程
1 # 交集 2 print(set_1.intersection(set_2)) 3 # 並集 4 print(set_1.union(set_2)) 5 # 差集 6 print(set_1.difference(set_2)) 7 # 互相差的並集 8 print(set_1.symmetric_difference(set_2)) 9 # 無交集斷定 10 print(set_1.isdisjoint(set([9,11]))) 11 # 子集斷定 12 print(set([1,3]).issubset(set_1)) 13 # 父集斷定 14 print(set_1.issuperset(set([1,3]))) 15 16 # 增長元素: 17 # 若是元素已經存在則不作任何改變 18 set_1.add(3) 19 print(set_1) 20 21 # 更改更新: 22 # 合併並更新 23 set_1.update(set_2) 24 # 將計算後的結果更新到原集合 25 set_1.difference_update(set_2) 26 set_1.intersection_update(set_2) 27 set_1.symmetric_difference_update(set_2) 28 print(set_1) 29 30 # 刪除元素: 31 # 若是不存在也不報錯 32 set_1.discard(9) 33 # 元素不存在時會報錯,對比discard() 34 set_1.remove() 35 # 隨機刪除一個元素 36 set_1.pop() 37 # 清空集合內元素 38 set_1.clear()
文件的操做windows
os.path 模塊中的路徑名訪問函數緩存
分隔數據結構
basename() 去掉目錄路徑, 返回文件名yii
dirname() 去掉文件名, 返回目錄路徑函數式編程
join() 將分離的各部分組合成一個路徑名
split() 返回(dirname(), basename()) 元組
splitdrive() 返回(drivename, pathname) 元組
splitext() 返回(filename文件名, extension後綴) 元組
信息
getatime() 返回最近訪問時間
getctime() 返回文件建立時間
getmtime() 返回最近文件修改時間
getsize() 返回文件大小(以字節爲單位)
查詢
exists() 指定路徑(文件或目錄)是否存在
isabs() 指定路徑是否爲絕對路徑
isdir() 指定路徑是否存在且爲一個目錄
isfile() 指定路徑是否存在且爲一個文件
islink() 指定路徑是否存在且爲一個符號連接
ismount() 指定路徑是否存在且爲一個掛載點
samefile() 兩個路徑名是否指向同個文件
os.path.isdir(name):判斷name是否是一個目錄,name不是目錄就返回false
os.path.isfile(name):判斷name是否是一個文件,不存在name也返回false
os.path.exists(name):判斷是否存在文件或目錄name
os.path.getsize(name):得到文件大小,若是name是目錄返回0L
os.path.abspath(name):得到絕對路徑
os.path.normpath(path):規範path字符串形式
os.path.split(name):分割文件名與目錄(事實上,若是你徹底使用目錄,它也會將最後一個目錄做爲文件名而分離,同時它不會判斷文件或目錄是否存在)
os.path.splitext():分離文件名與擴展名
os.path.join(path,name):鏈接目錄與文件名或目錄
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路徑
os模塊中的文件操做:
1.重命名:os.rename(old, new)
2.刪除:os.remove(file)
3.列出目錄下的文件:os.listdir(path)
4.獲取當前工做目錄:os.getcwd()
SN | 方法以描述 |
---|---|
1 |
關閉文件。一個關閉的文件沒法讀取或寫入任何東西。
|
2 |
刷新內部緩存,像標準輸入fflush。這多是一些類文件對象的一個空操做。
|
3 |
返回所使用的底層實現,從操做系統I/O操做的整數文件描述符。
|
4 |
若是文件被鏈接到一個tty(狀)裝置則返回True,不然返回False。
|
5 |
返回每次被調用時文件中的下一行。
|
6 |
從文件
讀取大小最多字節(或更少,若是它們得到大小字節以前讀取命中EOF)。
|
7 |
從文件中讀取一整行。結尾的換行符保持的字符串中。
|
8 | 讀取直到EOF使用 ReadLine()並返回一個包含行的列表。若是可選sizehint參數存在,而不是讀取到EOF,全行共計約sizehint字節(四捨五入到內部緩衝區大小後可能)被讀取。 |
9 |
設置該文件的當前位置
|
10 |
返回文件的當前位置
|
11 | 截斷文件的大小。 若是size參數存在,則文件被截斷爲(至多)該尺寸。 |
12 |
將一個字符串寫入該文件。沒有返回值。
|
13 | 寫入字符串序列到文件。該序列能夠是一個迭代對象的字符串 - 典型字符串列表。 |
打開文件:
# 不須要關閉文件,對文件的操做所有在子代碼塊中完成便可 with open() as f: # 下面這種方式須要顯式的關閉文件才行 f = open() f.close()
打開文件的模式有:
"+" 表示能夠同時讀寫某個文件
"U"表示在讀取時,能夠將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)
讀文本文件:
1 #後兩個參數是默認的,能夠不加 2 input = open('data', 'r',encoding='utf-8')
讀二進制文件:
1 input = open('data', 'rb')
讀取全部文件內容:
1 # 直接使用 in 獲取文件中的行便可 2 for line in f: 3 print(line.strip())
讀每行 :
file_object.readlines() #不推薦,由於這須要將所有文件內容加載到內存中,若是文件特別大的時候對性能影響很大!
讀取固定字節 :
1 open('abinfile', 'rb').read(100)
函數的定義:
1 # 經過def和()定義函數,()中爲函數的參數,定義函數式的參數爲形式參數 2 # foo爲函數的邏輯代碼塊 3 # return bar 中的bar爲函數的返回值 4 def func(argument1,argument2...): 5 foo 6 return bar
函數的參數,實參與形參:
如上所述形參就是函數定義時候()中定義的參數名稱,而實參是指函數調用時候使用的,實際傳入的參數。
函數的位置參數、關鍵字參數和不固定參數:
調用函數傳入參數的時候,若是不指定關鍵字,默認是按參數定義的順序依次傳入,這種方式傳入的參數稱爲位置參數;
1 func(1,'xiaoming')
調用函數時能夠根據形參名稱使用=將值傳入,這種方式稱爲關鍵字參數;
1 func(id=1,name='xiaoming')
不固定參數有兩種分別是可傳入列表的等價於位置參數的*args,定義形參的時候增長一個*args參數用來接收不固定數量的參數,便於函數的擴展。
1 def func(name,*args): 2 foo 3 4 func(name='abc',*[1,2,3,4])
第二種是使用**kwargs來標識,能夠接收字典類型的輸入,等價於不固定個數的關鍵詞參數的使用。固然這兩種方式在函數調用的時候也是須要使用*或者**進行標識。
1 def func(**kwargs) 2 3 func(**{'id':1,'name':'xiaoming'})
實參傳入的原則:關鍵字參數不能夠在位置參數以前,不固定參數在最後。
函數的返回值:
函數的返回值是區別於過程是編程的一個典型特色,返回值的做用能夠是返回函數的狀態,能夠返回函數的處理結果,還能夠調用其餘的函數,固然執行return表明着函數全過程的結束。
1 def func(a,b): 2 if foo: 3 return a 4 else: 5 return b
高階函數:
一、變量能夠指向函數;
二、函數的返回值能夠是函數;
三、一個函數能夠接收另外一個函數做爲參數;
1 def func(a,b,f): 2 return f(a)+f(b)
遞歸特性:
一、 必須有一個明確的結束條件
二、 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減小
三、 遞歸效率不高,遞歸層次過多會致使棧溢出(在計算機中,函數調用是經過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。因爲棧的大小不是無限的,因此,遞歸調用的次數過多,會致使棧溢出)
變量的做用域:
變量能夠分爲全局變量和局部變量,全局變量的定義是在函數外,或者使用global 關鍵詞來標識一個變量。
顧名思義全局變量的做用域是全局,即當前py文件中變量定義位置以後的任何位置,均可以引用這個變量。
局部變量是指盡在局部生效的變量,好比函數中定義的變量盡在函數內部有效(global標識的除外),這與shell中的變量有很大不一樣,shell中的變量都是全局變量,函數中若是要標識局部變量還須要使用關鍵詞local,確實很不同。
函數式編程: