####################总结#######################

模块:你写的py文件

引用其他模块

1.import 模块

2.from 模块 import 功能,类,变量,函数

1.random

  random.random() 0-1之间的任意小数
  random.uniform(a,b) a-b之间的随机小数
  random.randint(a,b) a-b随机整数
  random.choice()随机选择一个
  random.sample()随机选择多个

2.time 时间模块 datetime模块

1.时间戳(数字形成的时间) time.time()

2.格式化时间 time.strftime("%Y-%m-%d" %H:%M:%S)

3.结构化时间 time.localtime()

数字-->格式化时间

import time
num=1232131
s=time.localtime(num)#先把时间转化成py结构时间
time.strftime("%Y-%m-%d %H:%M:%S",s)

格式化时间-->数字

str='2009-01-06 16:40:13'
struct_time = time.strptime(str, "%Y-%m-%d %H:%M:%S")
time.mktime(struct_time)
结果:
1231231213.0
datetime模块定义了5个类,分别是
1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔 5.datetime.tzinfo:时区的相关信息 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
import datetime
day = datetime.datetime.now()
ddelay = datetime.timedelta(days=1)
print(day)
print(day - ddelay) # 一天前的时间
print(day + ddelay) # 一天后的时间
print(day - wdelay) # 5 周前
print(day + wdelay) # 5 周后 2019-01-21 22:19:25.705625 >>> print(day.strftime("%Y-%m-%d"))
2019-01-21

3. collections (ke lai sheng ri)

1.defaultdic 默认字典

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 0)
>>> print(dd["张无忌"])
0
>>> print(dd["宝宝"])
0
>>> print(dd)
defaultdict(<function <lambda> at 0x0000000002A3AA60>, {'张无忌': 0, '宝宝': 0})

2.OrderedDict 排序字典

>>> from collections import OrderedDict
>>> dic = OrderedDict()
>>> dic["b"] = "哈哈"
>>> dic['a'] = "呵呵"
>>> print(dic)
OrderedDict([('b', '哈哈'), ('a', '呵呵')])
>>> print(dic.get("a"))
呵呵
>>> print(dic.values())
odict_values(['哈哈', '呵呵'])
>>> print(dic["a"])
呵呵

3.Counter 计数器

>>> from collections import Counter
>>> print(Counter("宝宝今年特别喜欢王宝强"))
Counter({'宝': 3, '今': 1, '年': 1, '特': 1, '别': 1, '喜': 1, '欢': 1, '王': 1,
'强': 1})
>>> dic = {"a":"哈哈", "b":"哈哈", "c":"车牌"}
>>> c = Counter(dic.values())
>>> print(c)
Counter({'哈哈': 2, '车牌': 1})

4.deque 双向队列

Stack 栈
先进后出(FILO)

Queue 队列
先进先出(FIFO)

########栈

class RunException(Exception):
pass
class ChuException(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 RunException('入口满了')
self.lst.insert(self.top,el)#存放元素
self.top +=1#栈顶指针向上移动一下
#出栈
def pop(self):
if self.top ==0:
raise ChuException('没有了')
self.top-=1
el = self.lst[self.top]
return el
s=Stack(6)
s.push('宝宝1')
s.push('宝宝2')
s.push('宝宝3')#入栈传参
print(s.pop())#出口弹出
print(s.pop())
print(s.pop())
######################
宝宝3
宝宝2
宝宝1

########队列

import queue
q=queue.Queue()
q.put('李嘉诚1')
q.put('李嘉诚2')
q.put('李嘉诚3') print(q.get())
print(q.get())
print(q.get()) ##########
李嘉诚1
李嘉诚2
李嘉诚3

################双向

from collections import deque
d = deque() # 创建双向队列
d.append("宝宝") # 在右侧添加
d.append("no")
d.append("way") 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()) # 从左边拿数据
###########结果########
Traceback (most recent call last):
File "D:/python_work_s18/day25模块和包/test.py", line 46, in <module>
print(d.popleft()) # 从左边拿数据
IndexError: pop from an empty deque
way
no
宝宝 娃哈哈
优酸乳
爽歪歪

5. functools

1.wraps 装饰器,给inner改名字

from functools import wraps#可以改变函数的名字
def wrapper(fn):
@wraps(fn) #把inner的名字改变成原来的func
def inner(*args,**kwargs):#为了目标函数传参
print('前')
ret=fn(*args,**kwargs)#为了调用目标函数,ret返回值
print('后')
return ret#把目标返回值
return inner#直接调用innter
@wrapper
def func():
print('哈哈哈')
print(func.__name__)

2.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 # 0+1 +4 +7+2+5+8+3+6+9 # 累加 # 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数
# 第二个参数就是你这个序列中的第一个数据
# 接下来. 把刚才返回的结果作为第一个参数传递个a
# 继续吧刚才的结果给第一个参数. 把第三个数据传递给b
ret = reduce(func, [1,4,7,2,5,8,3,6,9],0)#可以设置默认参数

3.偏函数(partial) 固定函数的参数

#场景 不是你写的代码 你可以执行 加东西

from functools import partial

def chi(zhushi, fushi):
print(zhushi, fushi)
# 固定函数中某些参数的值
chi2 = partial(chi, fushi="辣鸡爪1")
chi2("大米饭")
chi2("小米饭")
# chi2("黑米饭")
######################
大米饭 辣鸡爪1
小米饭 辣鸡爪1

###################作业###################

# 1、回顾文件递归遍历. 默写一遍.
import os
def func(lujing,n):
lst=os.listdir(lujing)#打开文件夹,列出所有名字 b c
for el in lst: #循环当前文件夹名字 b c
path=os.path.join(lujing,el)#拼接出路径+文件夹 D:/app/zip\7-Zip
if os.path.isdir(path):#判断是不是文件夹
print('...'* n,el) #如果是文件就打印
func(path,n+1) #再来一次
else:
print("\t" * n,el)
func("D:/app/zip",0) # 2、写一个copy函数,接受两个参数,第一个参数是源文件的位置,第二个参数是目标位置,将源文件copy到目标位置。 # 3、计算时间差(用户输入起始时间和结束时间. 计算时间差(小时),
# 例如, 用户输入2018-10-08 12:00:00 2018-10-08 14:30:00 输出2小时30分
import time
start_str = input("请输入起始时间(yyyy-mm-dd hh:mm:ss):")
end_str = input("请输入结束时间(yyyy-mm-dd hh:mm:ss):") # 结构化时间
struct_time_start = time.strptime(start_str, "%Y-%m-%d %H:%M:%S")
struct_time_end = time.strptime(end_str, "%Y-%m-%d %H:%M:%S") #时间戳
start = time.mktime(struct_time_start)
end = time.mktime(struct_time_end) # 计算时间差
diff_sec = end - start
# print(diff_sec)
diff_min = diff_sec // 60#这个分钟就可以进行计算金额了 # 计算小时, 显示的分钟
diff_hour_display = int(diff_min // 60)#显示小时
diff_min_display = int(diff_min % 60)#分钟 print(f"经过了{diff_hour_display}小时{diff_min_display}分钟")
# 4、使用random.random()来计算[m,n]以内的随机整数
import  random
def a(m,n):
ret = int(random.random() * (m - n + 1) + n)
return ret
ret=a(20,18)
print(ret)
# 5、写一个用户注册登陆的程序,每一个用户的注册都要把用户名和密码用字典的格式写入文件userinfo。在登陆的时候,再从文件中读取信息进行验证。
#
# 注册
# username = input("请输入你的用户名:")
# userpwd = input("请输入你的密码:")
#
# dic = {"username":username, "userpwd":userpwd}
#
# f = open("userinfo", mode="a", encoding="utf-8")
# f.write(str(dic)+"\n")
# f.flush()
# f.close() # 登录
username = input("请输入你用户名:")
password = input("请输入你密码:") f = open("userinfo", mode="r", encoding="utf-8")
for line in f:
d = eval(line.strip())
if username == d['username'] and password == d['userpwd']:
print("登录成功")
break else:
print("登录失败") f.close()

# 明日默写内容:
#
# 1. 时间戳转换成格式化时间
import time
a=1545829865.6255307
t=time.localtime(a)#先把这个时间转化成python中的结构化时间
s=time.strftime("%Y-%y-%d %H:%M:%S")
print(s) # 2. 格式化时间转换成时间戳 import time
s='2019-09-09 12:10:10'
#把用户户儒的字符串转换成结构化时间
st=time.strptime(s,'%Y-%m-%d %H:%M:%S')
#转换成时间戳
num=time.mktime(st)
print(num)
# 3. 通用装饰器(带wraps) from functools import wraps def wrapper(fn): @wraps(fn)#把inner的名字改成原来的dunc def inner(*args,**kwargs): print('前') res=fn(*args,*kwargs) print('后') return res return inner @wrapper def func(): print('hahah') print(func.__name__)

python 模块一(random,counter,defaultdict,time,wraps,reduce) 栈 队列 双向队列的更多相关文章

  1. python模块之random

    python的随机数模块为random模块,可以产生随机的整数或浮点数.但是这是伪随机数,python解释器会维护一些种子数,然后根据算法算出随机数.linux维护了一个熵池,这个熵池收集噪音的信息, ...

  2. Python模块:Random(未完待续)

    本文基于Python 3.6.5的官文random编写. random模块简介 random为各种数学分布算法(distributions)实现了伪随机数生成器. 对于整数,是从一个范围中均匀选择(u ...

  3. Python 模块:random 随机数生成

    Python中的random模块用于生成随机数. 使用该模块之前需要 import random 几个常用的函数用法: 1.random.random 函数原型: random.random() 用于 ...

  4. python模块:random

    """Random variable generators. integers -------- uniform within range sequences ----- ...

  5. python模块之random模块

    random模块 随机模块,用于处理随机问题. import random # 随机整数 print(random.randint(0, 9)) # 0到9之间随机一个整数 print(random. ...

  6. Python 栈和队列,双向队列

    # 栈 # 特点: 先进后出 class StackFullException(Exception): pass class StackEmptyException(Exception): pass ...

  7. python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块

    一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...

  8. python模块之collections random

    collections 在内置数据类型(list, dict, tuple, set)的基础上,collections提供了几个额外的数据类型: Counter, deque, Orderdict, ...

  9. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

随机推荐

  1. Codeforces Round #542 Div. 1

    A:显然对于起点相同的糖果,应该按终点距离从大到小运.排个序对每个起点取max即可.读题花了一年还wa一发,自闭了. #include<iostream> #include<cstd ...

  2. python中的split()方法的使用

    Python split()方法:通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格.换行(\n).制表符(\t)等. l  Str.split()默认以空格,换行\n,制 ...

  3. 普通Splay详解

    预备知识: 二叉搜索树(BST) 至于BST,随便看一下就可以, 我们知道二叉搜索树是O(logN)的,那我们为什么要用平衡树呢? 之前我们了解到,BST的插入是小的往左子树走,大的往右子树走,如果凉 ...

  4. [ZJOI2005]九数码游戏(BFS+hash)

    Solution 这题的话直接上BFS就可以了,因为要输出方案,所以我们要开一个pre数组记录前驱,最后输出就可以了. 对于状态的记录,一般都用哈希来存,但因为这道题比较特殊,它是一个排列,所以我们可 ...

  5. zookeeper部署

    版本:zookeeper-3.4.5-cdh5.10.0.tar.gz 网址:http://archive-primary.cloudera.com/cdh5/cdh/5/ 1. 解压 $ tar - ...

  6. Ubuntu下安装Flask虚拟环境及使用

    一.关于Flask介绍 诞生时间:Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug工具箱编写的轻量级Web开发框架. Flask框架包含两 ...

  7. CAS与ABA问题产生和解决

    乐观锁和悲观锁 Synchronized属于悲观锁,悲观地认为程序中的并发情况严重,所以严防死守.CAS属于乐观锁,乐观地认为程序中的并发情况不那么严重,所以让线程不断去尝试更新. 性能对比: Syn ...

  8. [luogu3369][普通平衡树]

    题目链接 思路 模板 只是有几个容易出错的地方 第45行容易忘记 第54行里面的cnt--和siz--容易忘记 第56行是根据id判断不是val 第60行siz--容易忘记 第64行是siz+1不是s ...

  9. 怎么自行HTTP的POST包头,需要使用json

    http://bbs.csdn.net/topics/390674431 不理解你为什么这么传 post的格式如下:POST / HTTP/1.1Host: www.wrox.comUser-Agen ...

  10. 斯坦福大学公开课机器学习: advice for applying machine learning - evaluatin a phpothesis(怎么评估学习算法得到的假设以及如何防止过拟合或欠拟合)

    怎样评价我们的学习算法得到的假设以及如何防止过拟合和欠拟合的问题. 当我们确定学习算法的参数时,我们考虑的是选择参数来使训练误差最小化.有人认为,得到一个很小的训练误差一定是一件好事.但其实,仅仅是因 ...