码迷,mamicode.com
首页 > 编程语言 > 详细

Python常用模块之json、pickle、random、hashlib、collections

时间:2018-08-18 10:34:37      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:结构   简单的   pytho   choice   lib   ges   list   多次   参数   

1、json和pickle

json用于字符串和Python数据类型间进行转换
pickle用于python特有的类型和python的数据类型间进行转换
json和pickle均提供了四种方法dumps,dump,loads,load

##json
dumps()   ##转换成字符串
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]


##pickle
dumps()   ##将数据通过特殊的形式转换为只有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 random

def 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 code

print(v_code())

 

3、hashlib

hashlib提供了常见的摘要算法,如MD5,SHA1等等。

##md5计算
md5 = hashlib.md5("key".encode("utf8"))   ##可以添加秘钥,秘钥可以是用户id,这样就算密码相同,加密后的md5也是不一样的
md5.update(blove fly)
print(md5.hexdigest())

##SHA1
sha1 = hashlib.sha1("key".encode("utf8"))
sha1.update(blove fly)
print(sha1.hexdigest())

##计算MD5
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(blove fly)
>>> print(md5.hexdigest())
61976ec704dbce25ccb37ecacef1e4d6

##如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(blove)
>>> 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: 生成可以使用名字来访问元素内容的tuple
2.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)   ##添加到列表第一项
>>> q
deque([e, a, b, c, d])
>>> q.pop()             ##默认删除列表最后一个元素
d
>>> q.popleft()         ##删除列表的第一个元素
e
>>> q
deque([a, b, c])

##defaultdict使用字典时,如果引用的Key不存在,就会抛出 KeyError,如果希望key不存在时,返回一个默认值,就可以用 defaultdict. 
    X=defaultdict(lambda: N/A)
##OrderedDict有序字典的应用。OrderedDict 的有序性是按照插入的顺序,而不是KEY的顺序。
##Counter简单的计数器,例如,统计字符出现的个数。

 

Python常用模块之json、pickle、random、hashlib、collections

标签:结构   简单的   pytho   choice   lib   ges   list   多次   参数   

原文地址:https://www.cnblogs.com/lYng/p/9494748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!