《Python Cookbook 3rd》笔记汇总
文章目录
- 一、数据结构
- 二、字符串和文本
- 三、数字、日期和时间
- 四、迭代器与生成器
- 五、文件与IO
一、数据结构
标题 | 关键词 |
---|---|
1.1:拆分序列后赋值给多个变量 | 可迭代对象、拆分赋值 |
1.2:拆分任意长可迭代对象后赋值给多个变量 | 可迭代对象、拆分赋值、星号表达式 |
1.3:保留最近N个元素 | collections.deque、限容双端队列、yield |
1.4:查找最大或最小的N个元素 | heapq、堆 |
1.5:实现一个优先级队列 | heapq、堆、元组比较 |
1.6:字典中的键映射多个值 | 字典、collections.defaultdict |
1.7:字典排序 | collections. OrderedDict、双向链表 |
1.8:字典运算 | 字典、最小值、最大值、排序、键集、值集、键值对换、lambda |
1.9:查找两字典的相同点 | set、集合交与差的运算、字典推导式 |
1.10:删除序列相同元素并保持顺序 | set、yield、list、lambda |
1.11:命名切片 | 魔数、切片、slice()、indices() |
1.12:序列中出现次数最多的元素 | collections.Counter、字典 |
1.13:通过某个关键字排序一个字典列表 | 排序、sorted()、operator.itemgetter、lambda |
1.14:排序不支持原生比较的对象 | 排序、sorted()、operator.attrgetter、lambda |
1.15:通过某个字段将记录分组 | 分组、operator.itemgetter、litertools.groupby() |
1.16:过滤序列元素 | 列表推导式、生成器表达式、itertools.compress() |
1.17:从字典中提取子集 | 字典推导式 |
1.18:映射名称到序列元素 | 下标另名为、collections.namedtuple() |
1.19:转换并同时计算数据 | 聚集函数、sum()、max()、min()、列表推导式、生成器表达式 |
1.20:合并多个字典或映射 | 逻辑上的字典、collections.ChainMap |
二、字符串和文本
标题 | 关键词 |
---|---|
2.1:使用多个界定符分割字符串 | re、split()、正则式、非捕获分组、生成器表达式、[:]、[::] |
2.2:字符串开头或结尾匹配 | str.startswith()、str.endswith()、列表推导式 |
2.3:用Shell通配符匹配字符串 | fnmatch.fnmatch()、fnmatch.fnmatchcase()、列表推导式 |
2.4:字符串匹配和搜索 | re、正则式、compile()、match()、findall()、group() |
2.5: 字符串搜索和替换 | re、正则式、compile()、sub()、str.repalce() |
2.6:字符串忽略大小写的搜索替换 | re、正则式、re.IGNORECASE |
2.7:最短匹配模式 | re、正则式、非贪婪模式 |
2.8:多行匹配模式 | re、正则式、非捕获组、re.DOTALL |
2.9:将Unicode文本标准化 | unicodedata.normalize() |
2.10:在正则式中使用 Unicode | re、正则式、Unicode |
2.11:删除字符串中不需要的字符 | str.strip()、str.lstrip()、str.rstrip() |
2.12:审查清理文本字符串 | str.translate()、str.replace() |
2.13:字符串对齐 | str.ljust() 、str.rjust()、str.center()、format()、% |
2.14:合并拼接字符串 | +、str.join()、format()、yield |
2.15:字符串中插入变量 | str.format()、str.format_map() |
2.16:以指定列宽格式化字符串 | textwrap.fill() |
2.17:在字符串中处理html和xml | html.escape()、html.parser、xml.sax.saxutils |
2.18:字符串令牌解析 | re、正则式、编译原理 |
2.19:实现一个简单的递归下降分析器 | re、正则式、编译原理 |
2.20:字节字符串上的字符串操作 | 字节字符串 |
三、数字、日期和时间
标题 | 关键词 |
---|---|
3.1:数字的四舍五入 | round()、format() |
3.2:执行精确的浮点数运算 | Decimal |
3.3:数字的格式化输出 | format() |
3.4:二、八、十六进制整数 | bin()、oct()、hex()、format() |
3.5:字节到大整数的打包与解包 | int.from_bytes()、int.to_bytes() |
3.6:复数的数学运算 | complex()、cmath、numpy |
3.7:无穷大与 NaN | float()、man.isinf()、math.isnan() |
3.8:分数运算 | Fraction |
3.9:大型数组运算 | numpy |
3.10:矩阵与线性代数运算 | numpy |
3.11:随机选择 | random |
3.12:基本的日期与时间转换 | datetime、timedelta |
3.13:计算最后一个周五的日期 | datetime、timedelta |
3.14:计算当前月份的日期范围 | datetime、timedelta、date、calendar |
3.15:字符串转换为日期 | datetime |
3.16:结合时区的日期操作 | datetime、pytz |
四、迭代器与生成器
标题 | 关键词 |
---|---|
4.1:手动遍历迭代器 | next()、iter() |
4.2:代理迭代 | iter() |
4.3:使用生成器创建新的迭代模式 | frange()、range()、next() |
4.4:实现迭代器协议 | yield、yield from |
4.5:反向迭代 | reversed() |
4.6:带有外部状态的生成器函数 | iter() |
4.7:迭代器切片 | itertools.islice() |
4.8:跳过可迭代对象的开始部分 | itertools.dropwhile()、islice() |
4.9:排列组合的迭代 | itertools.permutations()排列、itertools.combinations()组合 |
4.10:序列上索引值迭代 | enumerate()枚举 |
4.11:同时迭代多个序列 | zip() |
4.12:不同集合上元素的迭代 | itertools.chain() |
4.13:创建数据处理管道 | yield、yield from、itertools.chain() |
4.14:展开嵌套的序列 | isinstance()、yield from |
4.15:顺序迭代合并后的排序迭代对象 | heapq.merge() |
4.16:迭代器代替 while 无限循环 | iter()、lambda |
五、文件与IO
标题 | 关键词 |
---|---|
5.1:读写文本数据 | open(), with…as…, encoding= |
5.2:打印输出至文件中 | print(’’, file=f) |
5.3:使用其他分隔符或行终止符打印 | print(’’, ‘’, ‘’, sep=’’, end=’’), str.join((’’,)) |
5.4:读写字节数据 | open(), rb, wb |
5.5:文件不存在才能写入 | open(), xt, xb, os.path.exists() |
5.6:字符串的 I/O 操作 | io.StringIO(), io.BytesIO() |
5.7:读写压缩文件 | gzip, bz |
5.8:固定大小记录的文件迭代 | iter(), functools.partial() |
5.9:读取二进制数据到可变缓冲区中 | bytearray(), file.readinto |
5.10:内存映射的二进制文件 | mmap |
5.11:文件路径名的操作 | os.path |
5.12:测试文件是否存在 | os.path |
5.13:读写压缩文件 | os.listdir(), glob |
5.14:忽略文件名编码 | sys.getfilesystemencoding() |
5.15:打印不合法的文件名 | UnicodeEncodeError |
5.16:增加或改变已打开文件的编码 | io.TextIOWrapper() |
5.17:将字节写入文本文件 | sys.stdout.buffer.write(b’’) |
5.18:将文件描述符包装成文件对象 | os.open(), open() |
5.19:创建临时文件和文件夹 | tempfile.TemporaryFile, tempfile.NamedTemporaryFile, tempfile.TemporaryDirectory() |
5.20:与串行端口的数据通信 | serial.Serial() |
5.21:序列化 Python 对象 | pickle.dump(), pickle.load() |
待续
还没有评论,来说两句吧...