python模块补充

collections模块

  collections模块namedtupe方法。又称具名元组。

from collections import namedtuple
point = namedtuple('空间坐标', 'x y z')    # x y z可以写成列表形式,元组等可迭代对象
res = point(3, 4, 5)
print(res)       # 空间坐标(x=3, y=4, z=5)
print(point(3, 4, 5).x)     # 提取x  结果 3
print(point(3, 4, 5).y)     # 提取y  结果 4
print(point(3, 4, 5).z)     # 提取z   结果 5

  队列queue

# 队列先进先出
import queue
q = queue.Queue()
q.put('1')     # 先进1
q.put('2')     # 在进2
q.put('3')     # 最后进3print(q.get())  # 结果 1
print(q.get())   # 结果2
print(q.get())   # 结果3
# 注使用queue方法时,取值借助get函数。当值取完后仍取值,程序会原地等待,直到拿到值为止

双端序列deque。从左右两边都可添加值进去,但仍然按照队列规则,先进先出。

from collections import deque
q = deque(['x','y','z'])  
q.append(1)
q.appendleft('a')
print(q)    # deque(['a', 'x', 'y', 'z', 1])
print(q.popleft())  # 结果 a
print(q.pop())  # 1

 

有序字典OrdereDict。

# 有序字典在其中添加键值,会在后面追加,这个排序位置不变。
from collections import OrderedDict
dict_queue = OrderedDict([(1,'A'), (2,'B')])dict_queue['a'] = 1
dict_queue['b'] = 2
print(dict_queue)

默认值字典defaultdict

from collections import defaultdict
my_dict = defaultdict(list)    # 设置默认值位为列表
print(my_dict['a'])  # []
print(my_dict)    # 结果defaultdict(<class 'list'>, {'a': []})

 

计数字典counter

from collections import Counter
s = 'dadfsfgjhafgbkafha'
s1 = Counter(s)
print(s1)     # 结果 Counter({'a': 4, 'f': 4, 'd': 2, 'g': 2, 'h': 2, 's': 1, 'j': 1, 'b': 1, 'k': 1})

 时间模块(time/datatime)

  time模块有三种表现形式。

1 时间戳。显示现在距离1970年1月1日零时零分零秒

import time
print(time.time())   # 1563442767.252297

2 格式化时间

import time
my_time = time.strftime('%Y-%m-%d %H:%M:%S')
print(my_time)   # 结果 2019-07-18 17:42:09

my_time1 = time.strftime('%Y-%m-%d %X')
print(my_time1)   # 结果 2019-07-18 17:43:38

my_time2 = time.strftime('%Y-%m')
print(my_time2)   # 结果  2019-07

my_time3 = time.strftime('%X')
print(my_time3)   # 结果  17:45:32

3 结构化时间

import time
my_time = time.localtime()
print(my_time)  # 结果 time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=17, tm_min=48, tm_sec=22, tm_wday=3, tm_yday=199, tm_isdst=0)

三种形式之间的转化

'''
三种形式的互选转换
'''
# 结构化时间与时间戳之间的转化
import time
my_1time = time.time()    # 时间戳
my_3time = time.localtime(my_1time)  # 等价于my_3time1 = time.gmtime(my_1time) 转结构化时间
print(my_3time)  # 结果 time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=18, tm_min=19, tm_sec=21, tm_wday=3, tm_yday=199, tm_isdst=0)
my_1time1 = time.mktime(my_3time)   # 结构化时间转时间戳
print(my_1time1)  # 结果 1563445161.0# 结构化时间于格式化时间的转化
my_2time = time.strftime('%Y-%m-%d')    # 格式化时间
my_2time1 = time.strftime('%Y-%m-%d %X', time.localtime(1563445161))  # 转格式化时间
print(my_2time1) # 结果 2019-07-18 18:19:21
my_3time = time.strptime('2019-07-18',my_2time) #转结构化时间(my_2time中格式化时间到天,否则报错)
print(my_3time)

datetime时间模块

import datetime
my_time = datetime.date(2019,6,11)  # 自定义化时间
print(my_time)  # 结果  2019-06-11
my_time1 = datetime.date.today()  # 当前时间
print(my_time1)  #结果2019-07-18
my_time = datetime.datetime.today()  # 精确时间获取
print(my_time)  # 结果 2019-07-18 18:59:00.905379# 获取年月日
print(my_time.year)    # 结果 2019
print(my_time.month)   # 结果 7
print(my_time.day)     # 结果 18
print(my_time.weekday())   # 结果 3
print(my_time.isoweekday())  # 结果 4# datetime运算操作
import datetime
now_day = datetime.date.today()   # 日期对象
last_day = datetime.timedelta(days=7)  # timedate对象

rec = now_day + last_day   # 日期对象 + timelate对象
print(rec)   # 日期对象 :结果2019-07-25
rec1 = rec - now_day  # 日期对象 - 日期对象
print(rec1)  # timedate对象 结果 7 days, 0:00:00

 随机模块random

#随机数获取
import random
print(random.random())   # 获取0到1之间的数           结果:0.21267928084158305
print(random.uniform(1, 10))  # 获取1到10之间的数     结果:6.744952496036854
print(random.randint(1, 10))  # 获取1(包括1)到10(包括10)之间的整数     结果:3
print(random.choice('123'))  # 获取字符串中的一个元素。(可迭代对象)     结果:3
print(random.sample([1,'23',3,[4,5]],2)) # 获取字符串中的两个元素。(可迭代对象)     结果:['23', [4, 5]]

sys模块

  sys模块和python解释器紧相关

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称

os模块

  os模块于操作系统相关

os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息os.system("bash command")  运行shell命令,直接显示
os.popen("bash command).read()  运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cdos.path
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)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
os模块操作

序列化

 序列是指字符串,序列化就是将其他数据类型转化成字符串的过程。反序列化就是将字符串转化成其他数据的过程。序列化有两个模块,json模块和pickle模块。两者有些不同,json支持多种编程语言,适用范围广泛,但支持数据类型少。pickle模块支持python所有数据类型,但是对于其他编程语言不支持。

序列化和反序列化json有四种方法。

dumps 与 loads
dump 与 load
'''import json
str1 = 'abcdefg'
dict1 = {}
for k, v in enumerate(str1, 1):dict1[v] = k
str_dict = json.dumps(dict1)
print(str_dict, type(str_dict))
yuan_dict = json.loads(str_dict)
print(yuan_dict, type(yuan_dict))f = open('json_file','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
f.close()f = open('json_file')
dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
f.close()
print(type(dic2),dic2)
View Code

 

转载于:https://www.cnblogs.com/huaiXin/p/11208668.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《力学》课时二质点运动学(二)

视频链接 1.角位移/角速度/角加速度

ListObject 多条件去重

上一篇将到根据某一条件去重List<Object> 对象链表。本文章根据多条件去重List<Object>去重 1 private List<StaingMD0010> getSecondProductWork(List<StaingMD0010> list) {2 for (int i 0; i < list.size(); i) {3 for (int j 0; …

More than Moore的探索

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;编译&#xff1a;porsche众所周知&#xff0c;现代电子学于1947年12月16日在新泽西州 Murray Hill的贝尔实验室诞生&#xff0c;在那里物理学家Walter Brattain 首次成功使用一种临时制作的半…

用scikit-learn学习主成分分析(PCA)

在主成分分析&#xff08;PCA&#xff09;原理总结中&#xff0c;我们对主成分分析(以下简称PCA)的原理做了总结&#xff0c;下面我们就总结下如何使用scikit-learn工具来进行PCA降维。 一、scikit-learn PCA类介绍 在scikit-learn中&#xff0c;与PCA相关的类都在sklearn.deco…

开始即结束,Meta元宇宙OS要黄?

来源&#xff1a;七月在线实验室出师未捷身先死&#xff0c;Meta元宇宙操作系统要凉凉了&#xff1f;团队解散&#xff0c;负责人跳槽&#xff01;副总裁亲自发推「辟谣」&#xff0c;但……Facebook进军元宇宙决心&#xff0c;如今要泡汤了&#xff1f;发布元宇宙产品不过瘾&a…

3.1_ 1_ 内存的基础知识

3.1_ 1_ 内存的基础知识 文章目录1.知识总览2.什么是内存&#xff0c;有什么作用进程的运行原理-指令逻辑地址vs物理地址从写程序到程序运行装入模块装入内存装入的三种方式--绝对装入装入的三种方式一静态重定位装入的三种方式- -动态重定位进程运行的基本原理链接的三种方式知…

为什么说黎曼猜想是最重要的数学猜想?

来源&#xff1a;卢老师网站: www.changhai.org作者: 卢昌海老师, 科学人黎曼猜想是一位名叫黎曼 (Bernhard Riemann) 的数学家提出的。黎曼是一位英年早逝的德国数学家&#xff0c; 出生于 1826 年&#xff0c; 去世于 1866 年&#xff0c; 享年还不到 40 岁。黎曼的一生虽然短…

【广搜】Keyboarding

题目描述 给定一个r行c列的在电视上的“虚拟键盘”&#xff0c;通过“上&#xff0c;下&#xff0c;左&#xff0c;右&#xff0c;选择”共5个控制键&#xff0c;你可以移动电视屏幕上的光标来打印文本。一开始&#xff0c;光标在键盘的左上角&#xff0c;每次按方向键&#xf…

3.1_ _2_ 内存管理的概念

知识总览 内存空间的分配和回收 内存空间的扩展 地址转换 内存保护 知识回顾

Yann LeCun:发现智能原理是AI的终极问题 | 独家对话

来源&#xff1a;智源社区对话整理&#xff1a;李梦佳 周致毅导读&#xff1a;在《科学之路&#xff1a;人&#xff0c;机器与未来》一书中&#xff0c;图灵奖得主&#xff0c;卷积网络之父杨立昆&#xff08;Yann LeCun&#xff09;提出&#xff0c;在科学史上&#xff0c;技术…

4.1.2电路交换、报文交换与分组交换

1.网络的掌中宝 2.为什么要进行数据交换 3.数据交换方式 3.1 电话交换 3.2报文交换 3.3分组交换 3.4 报文交换和分组交换 3.5三种数据交换比较总结

leetcode-187-重复的DNA序列

题目描述&#xff1a; 方法一&#xff1a; class Solution:def findRepeatedDnaSequences(self, s: str) -> List[str]:n 10d {}for i in range(len(s)-9):if s[i:i10] in d:d[s[i:i10]] Trueelse:d[s[i:i10]] Falsereturn [i for i in d if d[i]] 方法二&#xff1a; c…

机器人视觉三维成像技术全解析

来源&#xff1a;卢荣胜,史艳琼,胡海兵. 机器人视觉三维成像技术综述[J]链接&#xff1a;http://www.opticsjournal.net/Articles/Abstract/lop/57/4/040001.cshtml原题&#xff1a;机器人视觉三维成像技术综述摘要本文针对智能制造领域机器人视觉感知中的三维视觉成像技术进行…

4.1.3数据报与虚电路

4.1.3数据报与虚电路 文章目录4.1.3数据报与虚电路1.三种数据交换方式比较总结2.数据报方式&虚电路方式3.几种传输单元名词解析4.数据报5.虚电路数据报&虚电路 对比总结1.三种数据交换方式比较总结 2.数据报方式&虚电路方式 3.几种传输单元名词解析 4.数据报 5.虚电…

MIT物理学家观察超冷原子形成量子龙卷风晶体

来源&#xff1a;诸平科学网博客链接地址&#xff1a;https://blog.sciencenet.cn/blog-212210-1319857.htmlJust like the formation of weather patterns on Earth, here a spinning fluid of quantum particles breaks up into a crystal formed from swirling, tornado-lik…

4.2路由算法与路由协议概述

4.2路由算法与路由协议概述 文章目录4.2路由算法与路由协议概述1.路由算法2.路由算法的分类3.分层次的路由选择协议1.路由算法 2.路由算法的分类 3.分层次的路由选择协议

北大200页元宇宙报告!六大板块,看20家巨头的元宇宙布局 | 智东西内参

来源 北京大学汇丰商学院 安信证券作者&#xff1a;魏炜 等原标题&#xff1a;《元宇宙2022——蓄积的力量》如何看待元宇宙这一新事物&#xff1f;有人说元宇宙是未来互联网的发展目标&#xff0c;是人类信息技术的另一场革命&#xff0c;也有人说元宇宙概念只是“割韭菜”的套…

4.3.1 IP数据报格式

4.3.1 IP数据报格式 文章目录4.3.1 IP数据报格式1.TCP/IP协议栈2.IP数据报格式1.TCP/IP协议栈 2.IP数据报格式