集合

      在〈集合〉中尚無留言

namedtuple

建立一個自訂的tuple, 用起來就像是使用class 一樣方便. 但其屬性是不可變更的

from collections import namedtuple
Point=namedtuple('Point',['x', 'y'])
p=Point(1,2)
#p.x=100 不可變更
print(p.y)

deque

list用在存儲資料, 是以線性的方式寫成的, 所以在新增刪除元件時是非常緩慢的, 尤其是在資料量很大的時候. 所以deque就是為了改善這缺點而產生的.

from collections import deque
q=deque(["first", "second","third"])
q.append("forth")
q.appendleft("zero")
q.pop()
print(q)

defaultdic

dict若存取不存在的key值就會發生例外而中斷程式碼, 所以都要用try-except包含起來. 為了省下這麻煩, 就可以改用defaultdic

from collections import defaultdict
dic=defaultdict(lambda: 'Null')
dic["id"]=1
dic["name"]="thomas"
print("Name : %s, Address : %s" %(dic["name"], dic["address"]))

Counter

簡單計數器, 如下

from collections import Counter
c=Counter()
for ch in "python program designed":
    c[ch]+=1
print(c)

hashlib

雜湊碼演算法, 利用函數將不同長度的明碼轉換成固定長度的暗碼(digest). 而暗碼要再度轉回明碼, 是蠻困難的事情(不過聽說大陸一位女數學家已輕易的轉回去了). 這裏面包含了如md5, sha1..等.

md5           : 產生32個字元的字串(每個字元4byte), 共128byte
sha1          : 40個字元, 160byte
sha3_256 : 64個字元
sha3_512 : 128個字元

import hashlib
md5=hashlib.md5()
md5.update("mypassword".encode('utf-8'))
r=md5.hexdigest()
print("md5 : %s, length:%d" %(r, len(r)))

sha1=hashlib.sha1()
sha1.update("mypassword".encode('utf-8'))
r=sha1.hexdigest()
print("sha1 : %s, length:%d," %(r, len(r)))

sha2=hashlib.sha3_256()
sha2.update("mypassword".encode('utf-8'))
r=sha2.hexdigest()
print("sha3_256 : %s, length:%d," %(r, len(r)))

sha3=hashlib.sha3_512()
sha3.update("mypassword".encode('utf-8'))
r=sha3.hexdigest()
print("sha3_512 : %s, length:%d," %(r, len(r)))
結果 : 

md5 : 34819d7beeabb9260a5c854bc85b3e44, length:32
sha1 : 91dfd9ddb4198affc5c194cd8ce6d338fde470e2, length:40,
sha3_256 : 42a00eaa9468b08adc80d9dfb877a6d30c3ed64eea293e945228669ee3de4f1e, length:64,
sha3_512 : 6d8ce887d0e6bb2e975ef6a5bbf8e6474dcf4c02cbd7cb8a14523675e3bb995bca0bfb6b29fa48a9ffb2cc62738a1639502a04395e3868f634c23fb885e2b3b0, length:128,

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *