Python 学习之路(三)

Python 学习之路(三)

以下所用的是Python 3.6

一、集合部分

集合是一个无序的,不重复的数据集合,主要用来去重,以及关系测试:交集,差集,并集等

1.1 关系操作

1.1.1 列表去重

可以给列表去重,例如:

1 set_demo = [1,2,3,4,5,3,2,1] # 列表
2 set_demo = set(set_demo) # 转换成集合,来去重
3 print(set_demo)

1.1.2 取交集 intersection()方法

可以获得两个集合的交集部分,例如:

1 set_demo_1 = set([2,3,4,5,4])
2 set_demo_2 = set([2,22,33,44,11])
3 print(set_demo_1.intersection(set_demo_2))

1.1.3 取并集 union()方法

可以获得两个集合的并集,例如:

1 set_demo_1 = set([2,3,4,5,4])
2 set_demo_2 = set([2,22,33,44,11])
3 print(set_demo_1.union(set_demo_2))

1.1.4 差集 difference()方法

去除调用对象中的与参数共有的部分,即差集,例如:

1 set_demo_1 = set([1,2,3,4,5])
2 set_demo_2 = set([1,2,3])
3 print(set_demo_1.issuperset(set_demo_2))#set_demo_1是set_demo_2的父集 返回true
4 print(set_demo_2.issubset(set_demo_1))#set_demo_2是set_demo_1的子集 返回true

1.1.5 子集、父集

可以使用issubset,issuperset方法,例如:

1 set_demo_1 = set([1,2,3,4,5])
2 set_demo_2 = set([1,2,3])
3 print(set_demo_1.issuperset(set_demo_2))#set_demo_1是set_demo_2的父集 返回true
4 print(set_demo_2.issubset(set_demo_1))#set_demo_2是set_demo_1的子集 返回true

1.1.6 对称差集

集合A与集合B中所有不属于A∩B的元素的集合,例如:

1 set_demo_1 = set([2,3,4,5,4])
2 set_demo_2 = set([2,22,33,44,11])
3 print(set_demo_1.symmetric_difference(set_demo_2)) #返回去掉两者交集的部分

1.1.7 不相交的

两个集合如果没有交集就返回true,例如:

1 set_demo_1 = set([1,2,3,4,5])
2 set_demo_2 = set([11,22,33])
3 print(set_demo_1.isdisjoint(set_demo_2))#没有交集返回true

1.1.8 使用运算符来代替方法调用

1 A = B | C #取并集
2 A = B & C #取交集
3 A = B - C #取差集,在B中去掉C中的部分
4 A = B ^ C #取对称差集

1.2 基本操作

 1 set_demo = set([1,2,3,4,5])
 2 set_demo.add(66) #添加操作,添加一项
 3 set_demo.update([11,22]) #添加操作,添加多项
 4
 5 set_demo.remove(66) #删除操作,删除指定一项,若没有则报错
 6 len(set_demo) # 集合长度
 7
 8 set_demo.pop() #删除操作,随机删除一个,并且返回该值
 9 set_demo.discard(666) #删除操作,删除指定一个,若没有则什么都不做
10 print(set_demo)

二、文件部分

基本的流程:打开文件->操作文件->关闭文件

2.1 文件打开模式

模式 含义
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

注:上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。

2.2 文件的读写操作

读文件操作,read(size)方法,参数可以输入读取长度,不填默认读取全部

1 f = open("file_demo",mode="r",encoding=‘utf-8‘) #创建文件句柄引用
2 print(f.read())
3 f.close()

写文件操作

1 f = open("file_demo",mode="w",encoding=‘utf-8‘) #创建文件句柄引用
2 f.write("测试用例\n")
3 f.close()

读一行、多行

1 f = open("file_demo",mode="r",encoding=‘utf-8‘) #创建文件句柄引用
2 print(f.readline()) #单行读取
3 f.close()
4
5 f = open("file_demo",mode="r",encoding=‘utf-8‘) #创建文件句柄引用
6 for line in f.readlines(): #读取全部文件的全部行,存放着文件中,如果文件较大则速度会非常慢,一般不推荐readlines
7     print(line.strip())
8 f.close()

2.3 文件的光标(位置操作)

文件位置操作有以下几个方法:tell,seek tell()可以返回当前位置 seek(offset[, whence]),offset参数是开始的偏移量,表示偏移几个字节,whence默认为0,表示要从哪个位置开始偏移:0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

2.4 文件的flush()操作

flush()方法刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓冲区写入。可以防止断电等情况使数据没有写入文件。

1 f = open("file_demo",mode="a",encoding=‘utf-8‘) #创建文件句柄引用
2 f.write("这是追加数据")
3 f.flush()#将缓存区的数据写入到文件
4 f.close()

2.5 文件的truncate()方法

truncate( [ size ]):用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后,后面的所有字符被删除。

2.6 其他操作

fileno()返回一个整形的文件描述符 encoding()返回打开文件的编码方式 isatty()如果文件连接到一个终端设备返回 True,否则返回 False readable()如果文件可读,则返回True,否则返回 False writeable()如果文件可写,则返回True,否则返回 False

2.7 with操作

with可以自动帮忙关闭文件,释放资源

1 with open("file_demo",mode="r",encoding="utf-8" ) as f:
2     for line in f:
3         print(line.strip()) #strip用来去除换行

三、JSON 序列化与反序列化

序列化可以简单的理解为将对象存储到文件中,反序列化可以简单理解为将文件数据读取用对象来存储 序列化过程

1 import json #导入json包
2
3 # 序列化过程
4 # 字典类型转换为 JSON 对象
5 info = { "name":"CodeHu",
6          "age": 25}
7 with open("json.text","w") as f:
8     f.write( json.dumps(info) )
9     #json.dump(info,f) #或者使用dump

反序列过程

1 import json
2 # 反序列化
3 with open("json.text","r") as f:
4     print(json.loads(f.read())["age"])
5     #print(json.load(f)["age"])#可以采用load方法读取

四、工程目录规范

摘自https://www.cnblogs.com/JayeHe/p/6696848.html

4.1 一般目录结构

假设你的项目名为foo, 最方便快捷目录结构:

Foo/
|-- bin/
|   |-- foo
|
|-- foo/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py
|
|-- docs/
|   |-- conf.py
|   |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README

简要解释一下:

  • bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
  • foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3)程序的入口最好命名为 main.py
  • docs/: 存放一些文档。
  • setup.py: 安装、部署、打包的脚本。
  • requirements.txt: 存放软件依赖的外部Python包列表。
  • README: 项目说明文件。

4.2 README文件

这个是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。

它需要说明以下几个事项:

  • 软件定位,软件的基本功能。
  • 运行代码的方法: 安装环境、启动命令等。
  • 简要的使用说明。
  • 代码目录结构说明,更详细点可以说明软件的基本原理。
  • 常见问题说明。

4.3 setup.py

一般来说,用setup.py来管理代码的打包、安装、部署问题。业界标准的写法是用Python流行的打包工具setuptools来管理这些事情。这种方式普遍应用于开源项目中。不过这里的核心思想不是用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。

4.4 requirements.txt

这个文件存在的目的是: 方便开发者维护软件的包依赖。将开发过程中新增的包添加进这个列表中,避免在setup.py安装依赖时漏掉软件包。 方便读者明确项目使用了哪些Python包。 这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别,这样就可以简单的通过 pip install -r requirements.txt来把所有Python包依赖都装好。

原文地址:https://www.cnblogs.com/CodeHu/p/8456807.html

时间: 2024-12-28 16:28:53

Python 学习之路(三)的相关文章

Python学习之路【第一篇】-Python简介和基础入门

1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经进阶到主流的二十多种开发语言的top 5(数据源自最新的TIOBE排行榜). 来头不小啊!二十多种主流的开发语言,我该从哪一个开始呢?人生苦短,let‘s python! 1.2 Python的由来和发展趋势 Python的前世源自鼻祖“龟叔”.1989年,吉多·范罗苏姆(Gu

Python学习之路——强力推荐的Python学习资料

资料一:程序媛想事儿(Alexia)总结 Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Pyth

Python学习之路 001

Python学习之路 从今天起开始写Python学习的经历了,哈哈. 了解Python是在我想入坑Linux运维这条路开始的. 我是计算机出身有着一定编程的功底,刚开始接触Python的时候觉得Python我学习过的c,c++特性完全不一样.觉得为什么这东西会这么智能 就拿Hello World来说 C: 1 #include<stdio.h> 2 3 void main() 4 { 5 printf("Hello World"); 6 } C++: 1 #include&

Python 学习之路(二)

Python 学习之路(二) 以下所用的是Python 3.6 一.条件语句 简单判断 1 if 判断条件: 2 执行语句-- 3 else: 4 执行语句-- 复杂判断 1 if 判断条件1: 2 执行语句1-- 3 elif 判断条件2: 4 执行语句2-- 5 elif 判断条件3: 6 执行语句3-- 7 else: 8 执行语句4-- 二.循环语句 2.1 while语句 和其他语言一样,不同的是多了else语句.在 python 中,while - else 在循环条件为 false

Python学习之路(第一周)

走上软件开发之路已经三个年头.我本人是android原生开发出生.期间由于工作的需要以及开发的趋势发展,也走上混合开发的道路,现在主要运用ionic框架进行移动端app的开发.但是未来的互联网发展趋势还是大数据+人工智能.所以现在学习Python就很有必要.这里就不介绍Python语言的优劣了,想具体了解的小伙伴可以自行度娘吧. 好了,直接步入正题. 本博客主要记录自己接下来几个月的Python学习之路,能力有限,期间有什么表达不对的欢迎大家留言区批评指正! Python版本:Python3.5

Python学习之路—2018/7/11

Python学习之路-2018/7/10 3.功能开发 3.1 登录验证 login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <t

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

Python学习之路

Python学习之路 目录 Python学习之路[第一篇]:流程控制,用户交互,语法要求,变量,字符,注释,模块导入的使用 Python学习之路[第二篇]:文件,字符串,列表,元组,字典,集合的使用 更新中...

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun