一列表作用
1 去重
去除列表中重复的元素并且变成一个集合 list = set(list)
2 关系测试
取 list1 和 list2 列表的交集 list1.intersection=(list2)
取 list1 和 list2 列表的并集 list1.union=(list2)
取 list1 和 list2 列表的差集 list1.difference=(list2)
(取出 list1 里面有, list2 里面没有的)
取 list1 和 list2 列表的对称差集
list1.symmetric_difference(list2)
判断 list1 是否是 list2 的子集 list1.issubset(list2)
判断 list1 是否是 list2 的父集 list1.issuperset(list2)
判断 list1 和 list2 列表是否没有交集 list1.isdisjoint(list2)
用运算符表达
交集 list1 & list2 并集 sslist1 | list2
差集 list1 - list2 对称差集 list1 ^ list2
集合增删改查
list1.add(999) 集合没有插入, 只有增加, 并且是无序的
list1.update([888,7,5]) 添加多项
list1.remove(1)删除
判断 key 是否在字典里 key in list1
判断 key 是否不是在字典里 key not in list1
二文件操作
f = open(yesterday, a,encoding = utf-8)
文件句柄
a (append)添加
w (write)写, 如果文件不存在, 创建新文件写入
r+ (读写模式)以读和追加 (追加在文件尾) 的模式打开
w+ 先创建一个文件, 再写, 最后再读
rb 二进制读文件
rb 应用地方
1python3.0 中网络传输只能用二进制
2 一行一行的读文件, 在第二行加入分割线
(f.readlines 只适合读小文件)
循环文件读出来,
- for index, line in enumerate(f.readlines()):
- if index == 2:
- print("----- 分割线 -----")
- continue
- print(line.strip())
处理大文件, 一行一行的读, 读完一行就删除
- # 高级写法
- count = 0
- for line in f:
- if count == 1:
- print("----- 分割线 -----")
- count += 1
- continue
- print(line.strip())
- count += 1
f.seek(0)文件光标回到最开始
文件的一些操作
f.name() 文件名字
f.flush() 实时刷新
f.truncate(10) 从第 10 个字符开始截断, 后面的清空
** 类似于进度条创建 **
- import sys,time
- sys.stdout.write(*)
- sys.stdout.flush()
- time.sleep(0.1)
文件修改
创建一个新文件, 再逐行写入, 遇到需要修改的地方进行修改再写入, 达到修改文件的目的
with 语句 (with 代码块执行完毕时, 内部会自动关闭并释放文件资源)
with open(log, r) as f:
三字符编码与转码
转码先要 decode 转换成 unicode 码再 encode 转换成目标编码形式
例: gbk 转 utf8
- decode(本身的编码格式)
- encode(目标编码格式)
- gbk_to_utf8 = s_gbk.decode(gbk)
- gbk_to_utf8 = gbk_to_gbk.encode(utf8)
五函数与函数式编程
1. 面向对象: 类(class)
2. 面向过程: 过程(def)
3. 函数式编程: 函数(def)
函数是逻辑结构化和过程化的一种编程方法
使用函数的三大特点
1. 代码重用 2. 保持一致性 3. 可扩展
函数返回值:
返回值数 = 0; 返回 none
返回值数 = 1; 返回 object
返回值数 > 1; 返回 tuple
返回值是返回函数执行完毕的结果, 用于后面程序执行方式判断
参数:
1. 形参和实参
2. 位置参数和关键字参数(标准调用: 实参位置与形参位置一一对应, 关键字调用: 位置无固定, 关键字必须在位置参数后面)
3. 默认参数
4. 参数组:* 数组名(把 N 个未知参数转成元组的方式)
** 字典名(把 N 个关键字参数转成字典的方式)
函数内局部变量只能在函数内生效
不应该在函数内部更改全局变量, 非要改, 用 global 全局变量
除了字符串和整数不能再函数内改全局变量, 列表字典等都可以更改
* 递归 *
如果一个函数在内部调用自己, 叫递归函数
特性:
1. 必须有个明确的结束条件
2. 每次进入更深一层递归时, 问题规模相比上次递归都应有所减少
3. 递归效率不高, 递归层次过多会导致栈溢出
* 函数式编程 *
输入是确定的, 输出就是确定的
* 高阶函数 *
变量可以指向函数, 函数的参数能接受变量, 那么一个函数可以接收另一个函数作为参数, 这种函数就称之为高阶函数
作业: 实现删除, 创建, 查询功能
来源: http://www.bubuko.com/infodetail-2519753.html