python --常用内置模块01
- 引入模块
- # from XXX import XXXX
- # from school import student # 导入一个具体的功能
- # import school # 导入整个模块
- import random
- print(random.randint(10,20))
- from random import randint
- print(randint(10,20))
- random() 随机小数
- uninform(a,b) 随机小数
- randint(a,b) 随机整数
- choice() 随机选择一个
- sample()随机选择多个
- shuffle() 打乱
- import random
- print(random.randint(10,20)) # 随机整数
- print(random.randrange(1,10,2)) # 1-10的奇数[1,10)
- print(random.random()) # python中所有随机数的根 随机小数 0-1
- print(random.uniform(10,20)) # 10-20的随机小数
- lst = ['苹果','香蕉','荔枝','草莓','竹马']
- random.shuffle(lst) # 随机打乱顺序
- print(lst)
- # 从列表中随机选一个
- print(random.choice(['苹果','香蕉','荔枝','草莓','竹马']))
- print(random.sample(['苹果','香蕉','荔枝','草莓','竹马'],3))
- from collections import Counter
- print(Counter('中心广场的中心的公共的场所'))
- lst = ['苹果','苹果','香蕉','梨','荔枝','芒果']
- print(Counter(lst))
- # Counter({'苹果': 2, '香蕉': 1, '梨': 1, '荔枝': 1, '芒果': 1})
2、defaultdic() 默认值字典,可以给字典设置默认值,当key不存在的时候,直接获取默认值
- from collections import defaultdict
- # 默认值字典
- d = defaultdict(lambda:0) # callable 可调用的,字典是空的
- print(d) # defaultdict(<function <lambda> at 0x00000183A97B1E18>, {})
- print(d['zhangmeng']) # 从字典往外拿数据,字典是空的 key:callable()
- print(d['sunqian']) # 这里的[]和get()不是一回事
- print(d)
- # defaultdict(<function <lambda> at 0x000001AD70AD1E18>, {'zhangmeng': 0, 'sunqian': 0})
3、OrderDic()有序字典
- from collections import OrderedDict
- dic = OrderedDict() # 有序字典
- dic['a'] = 'A'
- dic['b'] = 'B'
- print(dic) # OrderedDict([('a', 'A'), ('b', 'B')])
- print(dic.get('a'))
- print(dic.values()) # odict_values(['A', 'B'])
- print(dic["a"])
- # 栈
- # 由于python没有给出Stack模块.所以我们自己手动写一个粗略版本
- # (注意, 此版本有严重的并发问题)
- # 特点:先进后出
- class StackFullException(Exception):
- pass
- class StackEmptyException(Exception):
- pass
- class Stack:
- def __init__(self,size):
- self.size = size
- self.lst = [] #存放数据的列表
- self.top = 0 # 栈顶指针
- # 入栈
- def push(self,el):
- if self.top >= self.size:
- raise StackFullException("your stack is full!!")
- self.lst.insert(self.top,el) #放元素
- self.top +=1 # 栈顶指针向上移动一下
- # 出栈
- def pop(self):
- if self.top == 0:
- raise StackEmptyException("your stack is empty!!")
- self.top -= 1
- el = self.lst[self.top]
- return el
- s =Stack(6)
- s.push('sunny')
- s.push('ANNA')
- s.push('zhouyou')
- s.push('hutong')
- s.push('wangying')
- s.push('zhangmeng')
- print(s.pop())
- print(s.pop())
- print(s.pop())
- print(s.pop())
- print(s.pop())
- print(s.pop())
- # print(s.pop())
栈
队列:python提供了queue模块
- import queue
- q = queue.Queue()
- q.put('a1')
- q.put('a2')
- q.put('a3')
- q.put('a4')
- q.put('a5')
- q.put('a6')
- q.put('a7')
- q.put('a8')
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get())
- print(q.get())
队列
- from collections import deque
- d = deque() # 创建双向队列
- d.append("认识")
- d.append("人生")
- d.append("想象")
- d.append("心门")
- d.appendleft("周末") # 从左边添加
- d.appendleft("周四")
- d.appendleft("周一")
- d.appendleft("周二")
- print(d.pop()) # 从右边拿数据
- print(d.pop()) # 从右边拿数据
- print(d.pop()) # 从右边拿数据
- print(d.pop()) # 从右边拿数据
- print(d.popleft()) # 从左边拿数据
- print(d.popleft()) # 从左边拿数据
- print(d.popleft()) # 从左边拿数据
- print(d.popleft()) # 从左边拿数据
deque
- import time
- # 时间戳 :从1970-01-01 00:00:00 开始计算,未来存储的时候用的是时间戳
- print(time.time())
- # print(time.mktime())
- # 格式化时间
- print(time.strftime('%Y-%m-%d %H:%M:%S')) # 一般用来显示
- # print(time.strptime('%Y-%m-%d %H:%M:%S'))
- # 结构化时间(python时间)
- print(time.localtime()) # 本地化的东八区时间
- # time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=21, tm_min=5, tm_sec=30, tm_wday=2, tm_yday=360, tm_isdst=0)
- print(time.gmtime()) # 格林尼治时间
- t = time.localtime()
- print(t.tm_year)
- print(t.tm_mon)
- print(t.tm_min)
时间格式化的标准
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
- # 数据库中存储一个数字,把他还原成我们的格式化时间
- a = 0
- # 先把这个时间戳转化成python中的解构化时间
- t = time.localtime(a)
- # t = time.gmtime(a) # 格林尼治时间
- # 把一个结构化时间转化成格式化时间
- s = time.strftime('%Y-%m-%d %H:%M:%S',t)
- print(s)
- # 让用户输入一个时间,把这个时间转化成时间戳
- user_input = input("请输入一个时间:")
- # 把用户输入的字符串转化成格式化时间
- struct_time = time.strptime(user_input,"%Y-%m-%d %H:%M:%D") # p :parse
- # 转化成时间戳
- num = time.mktime(struct_time)
- print(num)
计算时间差
- # 输入两个时间,计算两个时间之间的时间差
- import time
- first_time= input('请输入第一个时间:')
- second_time = input('请输入第二个时间:')
- time1 = time.mktime(time.strptime(first_time,'%Y-%m-%d %H:%M:%S'))
- time2 = time.mktime(time.strptime(second_time,'%Y-%m-%d %H:%M:%S'))
- time_cha = abs(time1-time2)
- struct_time = time.localtime(time_cha)
- print(struct_time)
- print(f"过去了{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}秒")
- from functools import wraps
- def wrapper(fn):
- @wraps(fn) # 把inner的名字改成原来的func
- def inner(*args,**kwargs):
- print("前")
- ret = fn(*args,**kwargs)
- print("后")
- return ret
- return inner
- @wrapper # func = wrapper(func)
- def func():
- print('hhhh')
- print(func.__name__)
- # 不加@wraps 时结果为 inner
- # 加@wraps 时结果为func
reduce 归纳
- # map 映射 reduce 归纳
- print(list(map(lambda x : x**2, [i for i in range(10)])))
- from functools import reduce
- def func(a,b):
- return a + b # 累加
- #会把我们每一个数据交给func去执行,把默认值作为第一个参数传递给函数
- # 第二个参数就是你这个序列中的第一个数据
- # 接下来,把刚才返回的结果作为第一个参数传递给a
- # 继续把刚才的结果给第一个参数,把第三个数据传递给b
- ret = reduce(func,[1,4,7,2,8,5,6])
- # 工作流程
- func(func(func(0,1),4),7)
- print(ret)
- print(reduce(lambda x,y :x+y,[i for i in range(101)]))
偏函数 把函数的参数固定
- from functools import partial
- def eat(zhushi,fushi):
- print(zhushi,fushi)
- # 固定函数中某些参数的值
- eat2 = partial(eat,fushi = '冒菜')
- eat2("大米饭")
- eat2("小米饭")
- eat2("黑米饭")
- eat2("紫米饭")
- eat2("糯米饭")
python --常用内置模块01的更多相关文章
- Python常用内置模块之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- python常用内置模块
#持续更新 #在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了 #os系统操作 ...
- Python 常用内置模块详解
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- Python 常用内置模块(加密模块 hashlib,Base64)
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...
- python常用模块-01
1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random() ...
- python常用内置模块,执行系统命令的模块
Subprocess模块 python3.5将使用Subprocess模块跟操作系统进行交互,比如系统命令,他将替换 os.system os.spawn* subprocess.run()方法封装的 ...
- python常用内置模块-random模块
random模块:用于生成随机数 '''关于数据类型序列相关,参照https://www.cnblogs.com/yyds/p/6123692.html''' random() 随机获取0 到1 之间 ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python web前端 01 HTML常用标签
Python web前端 01 HTML常用标签 一.HTML创建项目 file ---->new project -----> 输入项目名------>创建文件夹 new dicr ...
随机推荐
- java框架之Hibernate(4)-几种检索方式
准备 模型及映射文件 package com.zze.bean; import java.util.HashSet; import java.util.Set; public class Class ...
- 平常比较多实用的SQL
创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...
- 玩转spring boot——结合docker
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 liunx机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有 ...
- hdu5236 Article
题目链接 概率DP $dp_i$表示连打$i$个字符的期望按键数 那么枚举保存的次数,均分一下连打的个数就好 #include<iostream> #include<cstdio&g ...
- Python+OpenCV图像处理(十四)—— 直线检测
简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...
- h5 的localStorage和sessionStorage存到缓存里面的值是string类型
localStorage永久存在,不手动清除永远存在:sessionStorage 一次会话的浏览器关闭就自动清除 h5 的localStorage和sessionStorage 存到缓存里面的值都是 ...
- axios的封装
function axios(options){ var promise = new Promise((resolve,reject)=>{ var xhr = null; if(window. ...
- jQuery事件绑定与常用事件
jQuery事件与js类似,只是在名称上将前面的on去掉了,例如jQuery的click.mousedown.keypress事件.jQuery绑定事件有2种方法,下面用最基本的例子做演示. ①直接绑 ...
- 也说性能测试,顺便说python的多进程+多线程、协程
最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...
- 【题解】Luogu P4054 [JSOI2009]计数问题
原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真 ...