day 22[collecttions,time,random],迭代器的补充

一.collections,time时间,functools,random模块。

二.迭代器

三函数的嵌套。

三函数的嵌套。

一.collections,time时间,functools,random模块.

 (一)collections模块

1.Counter:一个计数器,主要用来计数.

low: 
s = "alex like pig" 
dic = {} 
for c in s:
    dic[c] = dic.get(c, 0) + 1 
print(dic) 
nb: 
s = "alex like pig" 
print(Counter(s)) # 获取到的结果可以像字典一样进行使用  [key]

 2.deque双向队列(具体内容详见day22.模块)

from collections import deque  #创建双向队列,该模块创建的队列,在取值时,如果取空了,会报错.
d = deque() # 创建双向队列
d.append("宝宝") #  在右侧添加
d.append("哈哈")
d.appendleft("娃哈哈") # 在左边添加
d.appendleft("爽歪歪")print(d.pop()) # 从右边拿数据
print(d.pop()) # 从右边拿数据
print(d.popleft()) # 从左边拿数据
print(d.popleft()) # 从左边拿数据
import queue  #创建队列,该模块创建的队列取值是如果取没了,不会报错.
q = queue.Queue()
q.put("李嘉诚")
q.put("张师兄")
print(q) 
#打印结果:<queue.Queue object at 0x000001F77C1482E8>
print(q.get()) print(q.get())

4.orderdict和defaultdict

5.namedtuple  命名元组

from collections import namedtuple
nt = namedtuple("point",["x","y"]) #自己定义一个元组,其实就是创建一个小型的类
p = nt(1,2)
print(p)
print(p.x)
print(p.y)

(二)time时间模块

时间有三种:

时间戳(time.time): 时间戳使⽤用的是从1970年年01月01日 00点00分00秒到现在一共经过了多少秒... 使用float来表示.

格式化时间(strftime). 这个时间可以根据我们的需要对时间进行任意的格式化. 

结构化时间(struct_time). 这个时间主要可以把时间进行分类划分. 比如. 1970 年01月01日 00点00分00秒  这个时间可以被细分为年, 月, 日.....一大堆东西. 

,展现给客户需要转换

格式化时间:

import time
s = time.strftime("%Y-%m-%d %H:%M:%S")    # 此时间为现在系统的格式化时间.
print(s)
输出结果为:
2018-12-27 07:30:19

结构化时间:

print(time.localtime()) 
结果: 
time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)

 

格式化时间转换成数字
user_input = 2020-10-01 04:18:12  #格式化时间
# 格式化时间转化成结构化时间  time.strptime(字符串时间,格式)
struct_time = time.strptime(user_input, "%Y-%m-%d %H:%M:%S")
num = time.mktime(struct_time)  # 转化成时间戳
print(num) #输出结果是一个数字
把计算机底层的数字时间,转换成格式化时间
a = 188888
t = time.localtime(a) # 结构化的本地东八区的时间
# t = time.gmtime(a) # 格林尼治时间
s = time.strftime("%Y-%m-%d %H:%M:%S", t)# 把一个结构化时间转化成格式化时间
print(s)

 (三)functools模块

①wraps()  #给装饰器中的inner改名字

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('哈哈哈')
print(func.__name__) # func

 ②reduce #跟map相对的

#map() 映射
print(list(map(lambda x:x**2,[i for i in range(10)])))
输出结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(reduce(lambda x,y:x*y,[i for i in range(1,10)]))
输出结果:362880

3)partial()  偏函数(固定函数中某些参数的值)

from functools import partial
def chi(zhushi, fushi):
    print(zhushi, fushi)
chi2 = partial(chi, fushi="辣鸡爪")
chi2("大米饭")
chi2("小米饭")
打印结果为:
大米饭 辣鸡爪
小米饭 辣鸡爪

(四)randome模块 (关于随机的模块)

import random
print(random.random)
print(random.uniform(3,10)) #3-10的小数
print(random.randint(3,10)) #3-10的整数
print(random.randrange(1,10,2)) #1-10的奇数
print(random.choice([1,"周杰伦",["感伦,'胡辣汤"]])) #列表元素任意2个组合
print(random.sample(([1, '23', [4, 5]], 2)) ) # 1或者23或者[4,5])
lst = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(lst) #随机打乱顺序
print(lst)

 (五)os模块(操作系统相关的模块)

import os
os.makedirs('dirname1/dirname2') #可生成多层递归目录
os.removedirs('dirname1')#删除指定路径的空目录,一直删除到不为空的目录
os.mkdir('dirname1') #生成单级目录
os.rmdir('dirname1') #删除单级空目录,如果目录不为空则报错.
os.listdir('dirname1') #列出指定目录下的所有文件和子目录,包括隐藏文件,列表形式返回
os.remove('dirname1') #删除一个文件,可以给绝对路径
os.rename('dirname1','dirname2')#从新命名
os.stat('path/filename') #获取文件/目录的信息

os.getcwd() #获取当前工作目录,即当前python脚本的工作目录路径
os.chdir("dirname") #改变当前脚本的工作目录.

os.path.abspath(path)  #返回path规范化的绝对路径
os.path.split(path) #讲path分割成目录和文件名二元组返回
os.path.dirname(path)#返回path 的目录,。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的⽂文件名。
                      如果path以/或\结尾,那么就会返回空值。 即os.path.split(path)的第二个元素
os.path.exists(path)#判断路径是否存在,如果path存在,返回True如果path不存在返回False
os.path.isabs(path) #判断是否为绝对路径,返回值True/False
os.path.isfile(path) #判断是否存在该文件,返回值True/False
os.path.isdir(path) #判断是否存该目录,True/False
os.path.join(path1,[path2,[...]])#讲多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getsize(path) #返回path的大小

 (六)sys模块(解释器相关的模块)

import sys
sys.version() #获取py解释器程序的版本信息
sys.path() #返回值是该模块的搜索路径,初始化时使用py环境变量的值

猜你喜欢

转载自www.cnblogs.com/lgw1171435560/p/10182921.html