摘要:常用模塊模塊在內(nèi)置數(shù)據(jù)類型的基礎(chǔ)上,模塊還提供了幾個(gè)額外的數(shù)據(jù)類型和等。有如下值集合,將所有大于的值保存至字典的第一個(gè)中,將小于的值保存至第二個(gè)的值中。如果希望不存在時(shí),返回一個(gè)默認(rèn)值,就可以用模塊常用方法線程推遲指定的時(shí)間運(yùn)行。
常用模塊 collections模塊
在內(nèi)置數(shù)據(jù)類型(dict、list、set、tuple)的基礎(chǔ)上,collections模塊還提供了幾個(gè)額外的數(shù)據(jù)類型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字來訪問元素內(nèi)容的tuple 2.deque: 雙端隊(duì)列,可以快速的從另外一側(cè)追加和推出對象 3.Counter: 計(jì)數(shù)器,主要用來計(jì)數(shù) 4.OrderedDict: 有序字典 5.defaultdict: 帶有默認(rèn)值的字典
1.namedtuple
- tuple可以表示不變集合,例如,一個(gè)點(diǎn)的二維坐標(biāo)就可以表示成:
p = (1,2)
- 看不出來1,2用來表示坐標(biāo),用namedtuple實(shí)現(xiàn)方法
from collections import namedtuple Point = namedtuple("Point",["x","y"]) p = Point(1,2) print(p.x) print(p.y)
- 定義方式:namedtuple("名稱", [屬性list])
2.deque
使用list存儲(chǔ)數(shù)據(jù)時(shí),按索引訪問元素很快,但是插入和刪除元素就很慢了,因?yàn)閘ist是線性存儲(chǔ),數(shù)據(jù)量大的時(shí)候,插入和刪除效率很低。deque是為了高效實(shí)現(xiàn)插入和刪除操作的雙向列表,適合用于隊(duì)列和棧:
from collections import deque q = deque(["a","b","c"]) q.append("x") q.appendleft("y") print(q) #deque(["y", "a", "b", "c", "x"])
deque除了實(shí)現(xiàn)list的append()和pop()外,還支持appendleft()和popleft(),這樣就可以非常高效地往頭部添加或刪除元素。
3.defaultdict
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],將所有大于 66 的值保存至字典的第一個(gè)key中,將小于 66 的值保存至第二個(gè)key的值中。即: {"k1": 大于66 , "k2": 小于66}
dic = {"k1":[],"k2":[]} l1 = [11,22,33,44,55,66,77,88,99,90] for number in l1: if number > 66: dic["k1"].append(number) elif number < 66: dic["k2"].append(number) print(dic) #普通字典需要先定義好一個(gè)字典,字典必須有k1,k2的key值
使用dict時(shí),如果引用的Key不存在,就會(huì)拋出KeyError。如果希望key不存在時(shí),返回一個(gè)默認(rèn)值,就可以用defaultdict:
from collections import defaultdict l1 = [11,22,33,44,55,66,77,88,99,90] dic = defaultdict(list) for number in l1: if number > 66: dic["k1"].append(number) elif number < 66: dic["k2"].append(number) elif number == 66: dic["k3"].append(number) print(dic)time模塊
1.常用方法:
1.time.sleep(secs) (線程)推遲指定的時(shí)間運(yùn)行。單位為秒 2.time.time() 獲取當(dāng)前時(shí)間戳
2.表示時(shí)間的三種方式:
1.時(shí)間戳(timestamp) :通常來說,時(shí)間戳表示的是從1970年1月1日00:00:00開始按秒計(jì)算的偏移量。我們運(yùn)行“type(time.time())”,返回的是float類型。 2.格式化的時(shí)間字符串(Format String): ‘1999-12-06’ %y 兩位數(shù)的年份表示(00-99) %Y 四位數(shù)的年份表示(000-9999) %m 月份(01-12) %d 月內(nèi)中的一天(0-31) %H 24小時(shí)制小時(shí)數(shù)(0-23) %I 12小時(shí)制小時(shí)數(shù)(01-12) %M 分鐘數(shù)(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應(yīng)的日期表示和時(shí)間表示 %j 年內(nèi)的一天(001-366) %p 本地A.M.或P.M.的等價(jià)符 %U 一年中的星期數(shù)(00-53)星期天為星期的開始 %w 星期(0-6),星期天為星期的開始 %W 一年中的星期數(shù)(00-53)星期一為星期的開始 %x 本地相應(yīng)的日期表示 %X 本地相應(yīng)的時(shí)間表示 %Z 當(dāng)前時(shí)區(qū)的名稱 %% %號(hào)本身
3.struct_time) :struct_time元組共有9個(gè)元素共九個(gè)元素:(年,月,日,時(shí),分,秒,一年中第幾周,一年中第幾天等)
import time #時(shí)間戳 print(time.time()) #字符串時(shí)間 print(time.strftime("%Y-%m-%d %H:%M:%S")) #時(shí)間元組:localtime將一個(gè)時(shí)間戳轉(zhuǎn)換為當(dāng)前時(shí)區(qū)的struct_time print(time.localtime()) #打印結(jié)果: 1530693574.325 2018-07-04 16:39:34 time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=16, tm_min=39, tm_sec=34, tm_wday=2, tm_yday=185, tm_isdst=0)
總結(jié):時(shí)間戳是計(jì)算機(jī)能夠識(shí)別的時(shí)間;時(shí)間字符串是人能夠看懂的時(shí)間;元組則是用來操作時(shí)間的
時(shí)間格式的轉(zhuǎn)化:
#1.時(shí)間戳轉(zhuǎn)結(jié)構(gòu)化時(shí)間 import time print(time.gmtime()) #UTC時(shí)間,與英國倫敦當(dāng)?shù)貢r(shí)間一致 print(time.localtime()) #當(dāng)?shù)貢r(shí)間。例如我們現(xiàn)在在北京執(zhí)行這個(gè)方法:與UTC時(shí)間相差8小時(shí),UTC時(shí)間+8小時(shí) = 北京時(shí)間 #2.結(jié)構(gòu)化時(shí)間轉(zhuǎn)時(shí)間戳 #獲取本地時(shí)間的結(jié)構(gòu)化時(shí)間 time_tuple = time.localtime() print(time_tuple) #將結(jié)構(gòu)化時(shí)間轉(zhuǎn)化為時(shí)間戳 print(time.mktime(time_tuple)) #3.結(jié)構(gòu)化時(shí)間轉(zhuǎn)字符串時(shí)間 #time.strftime("格式定義","結(jié)構(gòu)化時(shí)間") 結(jié)構(gòu)化時(shí)間參數(shù)若不傳,則現(xiàn)實(shí)當(dāng)前時(shí)間 print(time.strftime("%y-%m-%d %H:%M:%S")) print(time.strftime("%Y-%m-%d",time.localtime())) #4.字符串時(shí)間轉(zhuǎn)結(jié)構(gòu)化時(shí)間 #time.strptime(時(shí)間字符串,字符串對應(yīng)格式) print(time.strptime("2018-07-04","%Y-%m-%d")) #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=185, tm_isdst=-1)
計(jì)算時(shí)間差:
import time true_time=time.mktime(time.strptime("2017-09-11 08:30:00","%Y-%m-%d %H:%M:%S")) time_now=time.mktime(time.strptime("2017-09-12 11:00:00","%Y-%m-%d %H:%M:%S")) dif_time=time_now-true_time struct_time=time.gmtime(dif_time) print("過去了%d年%d月%d天%d小時(shí)%d分鐘%d秒"%(struct_time.tm_year-1970,struct_time.tm_mon-1, struct_time.tm_mday-1,struct_time.tm_hour, struct_time.tm_min,struct_time.tm_sec))random模塊
1.隨機(jī)小數(shù)
import random print(random.random()) #大于0且小于一的小數(shù) print(random.uniform(1,3)) #大于1且小于3的小數(shù)
2.隨機(jī)整數(shù)
import random print(random.randint(1,3)) #>=1且<=3的隨機(jī)整數(shù) print(random.randrange(1,10,2)) #大于等于1且小于10之間的奇數(shù)
3.隨機(jī)返回
import random print(random.choice([1,2,3,4,5,[6,7]])) #在列表中隨機(jī)選擇一個(gè)元素返回 print(random.sample([1,2,3,4,5,6],3)) #列表內(nèi)任意3個(gè)組合
4.打亂列表順序
import random l1 = [1,2,3,4,5] print(random.shuffle(l1)) print(l1)
生成隨機(jī)驗(yàn)證碼:
def random_number(numer,alpath=True): """ :param numer: 生成幾位 :param alpath: 默認(rèn)包括數(shù)字 :return: """ code = "" for i in range(numer): choice = random.randint(0,9) if alpath: number2 = chr(random.randint(65,90)) #大寫 number3 = chr(random.randint(97,122)) #小寫 choice = random.choice([choice,number2,number3]) print(choice) code += str(choice) return codeos模塊
os模塊是一個(gè)于操作系統(tǒng)交互的一個(gè)接口
import os os.getcwd() #獲取當(dāng)前的工作目錄當(dāng)前的工作目錄 os.chdir("E:pythonday08") #改變腳本工作目錄,相當(dāng)于shell下的cd os.curdir #返回當(dāng)前目錄 . os.pardir #返回到父集目錄 .. os.makedirs("linuxgo") #遞歸創(chuàng)建目錄,相當(dāng)于shell的mkdir -p os.removedirs("linuxgo") #若目錄為空則刪除,并遞歸到上一層目錄,如果上一次目錄也為空,也刪除。依次類推 os.mkdir("python") #生成單級(jí)目錄,相當(dāng)于shell中的mkdir path os.rmdir("python") #刪除單級(jí)空目錄,不為空則無法刪除 print(os.listdir("E:pythonday08")) #列出指定目錄下的所有文件和目錄,包括隱藏文件,以列表的方式打印 os.remove("1.py") #刪除某個(gè)文件 os.rename("day08.zip","day8.zip") #重命名目錄/文件 os.stat("README") #獲取文件/目錄信息,以一個(gè)元組的方式返回,可以按照索引取值 os.sep #在pycharm中打印的結(jié)果是:/,在windows解釋器是://,linux下為:/ print(os.name) #輸出當(dāng)前使用平臺(tái),win=“nt”,linux=“posix” os.system("bash commond") #運(yùn)行shell命令 os.popen("bash commond").read() #運(yùn)行shell命令,獲取執(zhí)行結(jié)果 print(os.environ) #獲取系統(tǒng)變量 os.path.abspath(path) #返回path規(guī)范化的絕對路徑 os.path.split(path) 將path分割成目錄和文件名二元組返回 os.path.dirname(path) #返回path的目錄。其實(shí)就是os.path.split(path)的第一個(gè)元素 os.path.basename(path) 返回path最后的文件名。如何path以/或結(jié)尾,那么就會(huì)返回空值。即os.path.split(path)的第二個(gè)元素 print(os.path.exists("E:python")) #判斷目錄/文件是否存在,存在返回True,反之false print(os.path.isabs("E:python")) #如果path是絕對路徑返回true,反之false print(os.path.isfile("Calculator.py")) #判斷文件是否存在,存在true,反之false print(os.path.isdir("python")) #判斷目錄是否存在,存在true,反之false os.path.getatime("E:pythonday08") #返回path所指向的文件或者目錄的最后訪問時(shí)間戳 os.path.getmtime("E:pythonday08") #返回path所指向的文件或者目錄的最后修改時(shí)間戳 os.path.getsize("E:pythonday08") #返回path的大小sys模塊
sys模塊是一個(gè)與python解釋器交互的模塊
import sys print(sys.argv) #命令行參數(shù)list,返回的是程序本身的路徑 sys.exit(n) #退出程序,正常退出是exit(0),錯(cuò)誤退出是exit(1) print(sys.version) #返回python解釋器的版本信息 print(sys.path) #返回模塊的搜索路徑 print(sys.platform) #返回操作平臺(tái)名稱re模塊
正則:
1.字符組 : [字符組]
- 在同一個(gè)位置可能出現(xiàn)的各種字符組成了一個(gè)字符組,在正則表達(dá)式中用[]表示 - 字符分為很多類,比如數(shù)字、字母、標(biāo)點(diǎn)等等。 - 假如你現(xiàn)在要求一個(gè)位置"只能出現(xiàn)一個(gè)數(shù)字",那么這個(gè)位置上的字符只能是0、1、2...9這10個(gè)數(shù)之一。
2.字符:
3.量詞:
注意:前面的*,+,?等都是貪婪匹配,也就是盡可能匹配,后面加?號(hào)使其變成惰性匹配
4.字符集:
5.分組 ()與 或 |[^]
身份證號(hào)碼是一個(gè)長度為15或18個(gè)字符的字符串,如果是15位則全部
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41932.html
摘要:如果你這個(gè)腳本想要使用其它腳本里面的變量函數(shù)和類也是可以的,在你這個(gè)腳本里面用來導(dǎo)入要引用的腳本,而那個(gè)被引用的腳本就稱作模塊。 在此之前,我們運(yùn)行一些簡短的Python代碼,都是通過Python解釋器(python或ipython)進(jìn)行的,如果我們退出解釋器再重新運(yùn)行解釋器后,上次敲進(jìn)去的變量、函數(shù)等都不見了,沒有保存下來。為了保存我們曾經(jīng)寫過的代碼,就是要寫成.py文件,稱為腳本。...
摘要:所以如果像上述這樣引入模塊的時(shí)候,調(diào)用函數(shù)必須加上模塊名通常情況下鼓勵(lì)每個(gè)語句只導(dǎo)入一個(gè)包方便理解和閱讀代碼。 今天我們學(xué)習(xí)Python的高級(jí)特性、模塊和IO操作,通過學(xué)習(xí)這些,我們可以更快的了解Python,使用Python。 高級(jí)特性中會(huì)講述列表生成式、生成器、和一些高級(jí)函數(shù),學(xué)習(xí)這些方便我們快速的生成列表,節(jié)省我們使用Python的時(shí)間,更快的使用Python達(dá)成我們的目的。 模...
摘要:下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)標(biāo)準(zhǔn)庫語言參考描述了語言的具體語法和語義,這份庫參考則介紹了與一同發(fā)行的標(biāo)準(zhǔn)庫。這個(gè)庫也包含了內(nèi)置函數(shù)和異常不需要語句就可以在所有代碼中使用的對象。下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù) 下一篇文章:Python標(biāo)準(zhǔn)庫---1、內(nèi)置函數(shù) Python 標(biāo)準(zhǔn)庫 Python 語言參考 描述了 Python 語言的具體語法和語義,這份庫參考則介紹了與 Python 一同發(fā)行的標(biāo)...
摘要:一概念通常的程序的構(gòu)架是指將一個(gè)程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。的程序構(gòu)架可表示為一個(gè)程序就是一個(gè)模塊的系統(tǒng)。它有一個(gè)頂層文件啟動(dòng)后可運(yùn)行程序以及多個(gè)模塊文件用來導(dǎo)入工具庫。導(dǎo)入是中程序結(jié)構(gòu)的重點(diǎn)所在。 一、概念 通常的Python程序的構(gòu)架是指:將一個(gè)程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。 Python的程序構(gòu)架可表示為: showImg...
摘要:模塊與包的導(dǎo)入一模塊導(dǎo)入定義模塊,是一個(gè)文件,以結(jié)尾,包含了對象定義和語句。使用模塊還可以避免函數(shù)名和變量名沖突。特別注意的是自定義的模塊名不應(yīng)該與系統(tǒng)內(nèi)置模塊重名。包是由一系列模塊組成的集合。模塊的導(dǎo)入使用語句。 【Python3】Python模塊與包的導(dǎo)入 一、模塊導(dǎo)入 1. 定義 Python 模塊(Module),是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Pytho...
閱讀 1219·2021-11-25 09:43
閱讀 1736·2021-09-13 10:25
閱讀 2696·2021-09-09 11:38
閱讀 3579·2021-09-07 10:14
閱讀 1806·2019-08-30 15:52
閱讀 706·2019-08-30 15:44
閱讀 3664·2019-08-29 13:23
閱讀 2044·2019-08-26 13:33