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