一.collections,time時間,functools,random模塊。html
二.迭代器python
三函數的嵌套。app
三函數的嵌套。dom
(一)collections模塊函數
1.Counter:一個計數器,主要用來計數.spa
low: s = "alex like pig" dic = {} for c in s: dic[c] = dic.get(c, 0) + 1 print(dic) nb: s = "alex like pig" print(Counter(s)) # 獲取到的結果能夠像字典同樣進行使用 [key]
2.deque雙向隊列(具體內容詳見day22.模塊)操作系統
from collections import deque #建立雙向隊列,該模塊建立的隊列,在取值時,若是取空了,會報錯. d = deque() # 建立雙向隊列 d.append("寶寶") # 在右側添加 d.append("哈哈") d.appendleft("娃哈哈") # 在左邊添加 d.appendleft("爽歪歪")print(d.pop()) # 從右邊拿數據 print(d.pop()) # 從右邊拿數據 print(d.popleft()) # 從左邊拿數據 print(d.popleft()) # 從左邊拿數據
import queue #建立隊列,該模塊建立的隊列取值是若是取沒了,不會報錯. q = queue.Queue() q.put("李嘉誠") q.put("張師兄") print(q)
#打印結果:<queue.Queue object at 0x000001F77C1482E8> print(q.get()) print(q.get())
4.orderdict和defaultdictcode
5.namedtuple 命名元組orm
from collections import namedtuple nt = namedtuple("point",["x","y"]) #本身定義一個元組,其實就是建立一個小型的類 p = nt(1,2) print(p) print(p.x) print(p.y)
(二)time時間模塊htm
時間有三種:
時間戳(time.time()): 時間戳使用的是從1970年年01月01日 00點00分00秒到如今一共通過了多少秒... 使用float來表示.
格式化時間(time.strftime()). 這個時間能夠根據咱們的須要對時間進行任意的格式化.
結構化時間(struct_time). 這個時間主要能夠把時間進行分類劃分. 好比. 1970 年01月01日 00點00分00秒 這個時間能夠被細分爲年, 月, 日.....一大堆東西.
,展示給客戶須要轉換
格式化時間:
import time s = time.strftime("%Y-%m-%d %H:%M:%S") # 此時間爲如今系統的格式化時間. print(s)
輸出結果爲:
2018-12-27 07:30:19
結構化時間:
print(time.localtime()) 結果: time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)
格式化時間轉換成時間戳時間
user_input = 2020-10-01 04:18:12 #格式化時間 # 格式化時間轉化成結構化時間 time.strptime(字符串時間,格式) struct_time = time.strptime(user_input, "%Y-%m-%d %H:%M:%S") num = time.mktime(struct_time) # 轉化成時間戳 print(num) #輸出結果是一個數字
把時間戳時間,轉換成格式化時間
a = 188888 t = time.localtime(a) # 結構化的本地東八區的時間 # t = time.gmtime(a) # 格林尼治時間 s = time.strftime("%Y-%m-%d %H:%M:%S", t)# 把一個結構化時間轉化成格式化時間 print(s)
(三)functools模塊
①wraps() #給裝飾器中的inner更名字
from functools import wraps # 能夠改變一個函數的名字, 註釋... def wrapper(fn): @wraps(fn) # 把inner的名字改變成原來的func def inner(*args, **kwargs): print("前") ret = fn(*args, **kwargs) print("後") return ret return inner @wrapper # func = wrapper(func) def func(): print('哈哈哈') print(func.__name__) # func
②reduce #跟map相對的
reduce(function, iterable[, initializer]) 函數會對參數序列中元素進行累積。
函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。
#map() 映射 print(list(map(lambda x:x**2,[i for i in range(10)]))) 輸出結果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(reduce(lambda x,y:x*y,[i for i in range(1,10)])) 輸出結果:362880
3)partial() 偏函數(固定函數中某些參數的值)
from functools import partial def chi(zhushi, fushi): print(zhushi, fushi) chi2 = partial(chi, fushi="辣雞爪") chi2("大米飯") chi2("小米飯") 打印結果爲: 大米飯 辣雞爪 小米飯 辣雞爪
(四)randome模塊 (關於隨機的模塊)
import random print(random.random) print(random.uniform(3,10)) #3-10的小數 print(random.randint(3,10)) #3-10的整數 print(random.randrange(1,10,2)) #1-10的奇數 print(random.choice([1,"周杰倫",["感倫,'胡辣湯"]])) #列表元素任意2個組合 print(random.sample(([1, '23', [4, 5]], 2)) ) # 1或者23或者[4,5]) lst = [1, 2, 3, 4, 5, 6, 7, 8] random.shuffle(lst) #隨機打亂順序 print(lst)
另外補充一個: round()函數,方法返回浮點數x的四捨五入值(不許確)。相關鏈接解釋: http://www.runoob.com/w3cnote/python-round-func-note.html
若是距離兩邊同樣遠,會保留到偶數的一邊。好比round(0.5)和round(-0.5)都會保留到0,而round(1.5)會保留到2.四捨五入前的數是奇數,是四舍五如;是偶數,則是五設六入
在用round()函數進行四捨五入時,若是你對結果有十足把握,而且這就是你想要的結果,那就放心大膽地使用。否則就老老實實寫個函數來實現吧,這不是什麼難事
(五)os模塊(操做系統相關的模塊)import os
os.makedirs('dirname1/dirname2') #可生成多層遞歸目錄 os.removedirs('dirname1')#刪除指定路徑的空目錄,一直刪除到不爲空的目錄 os.mkdir('dirname1') #生成單級目錄 os.rmdir('dirname1') #刪除單級空目錄,若是目錄不爲空則報錯. os.listdir('dirname1') #列出指定目錄下的全部文件和子目錄,包括隱藏文件,列表形式返回 os.remove('dirname1') #刪除一個文件,能夠給絕對路徑 os.rename('dirname1','dirname2')#重新命名 os.stat('path/filename') #獲取文件/目錄的信息 os.urandom(n) #隨機生成n個字節字符串(函數返回的隨機字節是根據不一樣的操做系統特定的隨機函數資源。即,這個函數是調用OS內部自帶的隨機函數的。有特異性)
os.getcwd() #獲取當前工做目錄,即當前python腳本的工做目錄路徑 os.chdir("dirname") #改變當前腳本的工做目錄. os.path.abspath(path) #返回path規範化的絕對路徑 os.path.split(path) #講path分割成目錄和文件名二元組返回 os.path.dirname(path)#返回path 的目錄,。其實就是os.path.split(path)的第一個元素 os.path.basename(path) 返回path最後的⽂文件名。 若是path以/或\結尾,那麼就會返回空值。 即os.path.split(path)的第二個元素 os.path.exists(path)#判斷路徑是否存在,若是path存在,返回True若是path不存在返回False os.path.isabs(path) #判斷是否爲絕對路徑,返回值True/False os.path.isfile(path) #判斷是否存在該文件,返回值True/False os.path.isdir(path) #判斷是否存該目錄,True/False os.path.join(path1,[path2,[...]])#講多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略 os.path.getsize(path) #返回path的大小
(六)sys模塊(解釋器相關的模塊)
import sys sys.version() #獲取py解釋器程序的版本信息 sys.path() #返回值是該模塊的搜索路徑,初始化時使用py環境變量的值