標籤:結構 簡單的 pytho choice lib ges list 多次 參數
1、json和pickle
json用於字串和Python資料類型間進行轉換
pickle用於python特有的類型和python的資料類型間進行轉換
json和pickle均提供了四種方法dumps,dump,loads,load
##jsondumps() ##轉換成字串loads() ##將json編碼的字串再轉換為python的資料結構dump() ##轉換成字串並存儲存到檔案中load() ##從資料檔案中讀取資料,並將json編碼的字串轉換為python的資料結構>>> print(json.dumps([‘aa‘, ‘bb‘, ‘cc‘]))["aa", "bb", "cc"]>>> print(json.loads(‘["aa", "bb", "cc"]‘))[‘aa‘, ‘bb‘, ‘cc‘]##pickledumps() ##將資料通過特殊的形式轉換為只有python語言認識的字串loads() ##將pickle資料轉換為python的資料結構dump() ##將資料通過特殊的形式轉換為只有python語言認識的字串,並寫入檔案load() ##從資料檔案中讀取資料,並轉換為python的資料結構>>> print(pickle.dumps([‘aa‘, ‘bb‘, ‘cc‘]))b‘\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.‘>>> print(pickle.loads(b‘\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.‘))[‘aa‘, ‘bb‘, ‘cc‘]
2、random
random.random() ##0~1之間的隨機小數random.uniform(1,3) ##1~3之間的隨機小數random.randint(1,5) ##[1,5]之間的隨機整數random.randrange(1,10,2) ##[1,10) 之間隨機奇數,間隔為2的數random.choice([1,‘23‘,[4,5]]) ##隨機播放一個返回random.sample([1,‘23‘,[4,5]],2) ##隨機播放多個返回,返回的個數為函數的第二個參數random.shuffle([1,3,5,7,9]) ##打亂列表順序##返回驗證碼import randomdef v_code(): code = ‘‘ for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return codeprint(v_code())
3、hashlib
hashlib提供了常見的摘要演算法,如MD5,SHA1等等。
##md5計算md5 = hashlib.md5("key".encode("utf8")) ##可以添加秘鑰,秘鑰可以是使用者id,這樣就算密碼相同,加密後的md5也是不一樣的md5.update(b‘love fly‘)print(md5.hexdigest())##SHA1sha1 = hashlib.sha1("key".encode("utf8"))sha1.update(b‘love fly‘)print(sha1.hexdigest())##計算MD5>>> import hashlib>>> md5 = hashlib.md5()>>> md5.update(b‘love fly‘)>>> print(md5.hexdigest())61976ec704dbce25ccb37ecacef1e4d6##如果資料量很大,可以分塊多次調用update(),最後計算的結果是一樣的>>> import hashlib>>> md5 = hashlib.md5()>>> md5.update(b‘love‘)>>> md5.update(b‘ fly‘)>>> print(md5.hexdigest())61976ec704dbce25ccb37ecacef1e4d6
4、collections
ollections是Python內建的一個集合模組,提供了許多有用的集合類,是python對預設資料結構的一種補充
##namedtuple是一個函數,它用來建立一個自訂的元組對象,並且規定了元組元素的個數,並可以用屬性而不是索引來引用元組的某個元素。>>> from collections import namedtuple>>> colltuple = namedtuple(‘colltuple‘, [‘x‘,‘y‘])>>> col = colltuple(‘yong‘,‘fly‘)>>> col.x‘yong‘>>> col.y‘fly‘在內建資料類型(dict、list、set、tuple)的基礎上,collections模組還提供了幾個額外的資料類型:Counter、deque、defaultdict、namedtuple和OrderedDict等。1.namedtuple: 產生可以使用名字來訪問元素內容的tuple2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象3.Counter: 計數器,主要用來計數4.OrderedDict: 有序字典5.defaultdict: 帶有預設值的字典##deque: list插入和刪除元素很慢,資料量大的時候,插入和刪除效率很低。deque是為了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧。>>> from collections import deque>>> q = deque([‘a‘,‘b‘,‘c‘])>>> q.append(‘d‘) ##預設添加列表最後一項>>> q.appendleft(‘e‘) ##添加到列表第一項>>> qdeque([‘e‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘])>>> q.pop() ##預設刪除列表最後一個元素‘d‘>>> q.popleft() ##刪除列表的第一個元素‘e‘>>> qdeque([‘a‘, ‘b‘, ‘c‘])##defaultdict使用字典時,如果引用的Key不存在,就會拋出 KeyError,如果希望key不存在時,返回一個預設值,就可以用 defaultdict. X=defaultdict(lambda: ‘N/A‘)##OrderedDict有序字典的應用。OrderedDict 的有序性是按照插入的順序,而不是KEY的順序。##Counter簡單的計數器,例如,統計字元出現的個數。
Python常用模組之json、pickle、random、hashlib、collections