
Python Cookbook
vv安的浅唱
致力于撰写每一篇跑通过实例的博客,更多文章信息可搜索关注【Hunter后端】
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python Cookbook 1.2 从任意长度的可迭代对象中分解元素
最近在啃 Python Cookbook 这本书,在里面有一些语法知识点虽然以前用到过,但是在这本书里会有一个详细的介绍,在接下来的博客里面会进行一系列的摘抄,并有一些会附上我的看法。另外,推荐这本书,因为我觉得值得每个学习 Python 的人仔细研读一下。当我们需要从一个列表或者字符串中取出某一些固定的值,其余的数据统一划分为一个列表,或者废弃,可以使用到 * 这个参数,使用方法如下: L...原创 2019-04-07 00:34:40 · 160 阅读 · 0 评论 -
Python Cookbook 4.15 对多个有序序列进行迭代
有两个有序序列,a = [1, 4, 7, 10]b = [2, 5, 6, 11]要对其进行有序迭代,以前的思路大概是,取两个临时变量,分别代表序列的第一个值,然后挨个比较大小,如果被取出去,变量取值接着往后走,直到某个序列所有值被取出来。在 Python 里有个 heapq.merge() 的函数,可以检查每个序列的第一个元素,比较大小,然后输出。import heapqa = ...原创 2019-09-22 21:27:22 · 189 阅读 · 0 评论 -
Python Cookbook 4.14 扁平化处理嵌套型的序列
首先看看什么是嵌套型的序列,比如:[1,2, [4,4,5, [6,7,8]],4,5]列表中又嵌套了一个列表,这就是嵌套型的序列。什么是扁平化处理呢?就是在获取元素的时候,能够像一个普通列表一样输出,如下:[1,2, 4,4,5, 6,7,8,4,5]使用到的语法是 yield from 。items = [1,2, [4,4,5, [6,7,8]],4,5]from col...原创 2019-09-22 21:14:48 · 185 阅读 · 0 评论 -
Python Cookbook 4.12 在不同容器中进行迭代
比如一个列表和一个集合,想要依次对其中的元素进行迭代,第一个想到的方法是,使用两个 for 循环,但是 Python 里提供了一个 itertools.chain() 函数,可以直接迭代。for item in chain([1,2,3], {'a', 'b', 'c'}, 'dfer'): print(item) 123cabdfer如果使用for i...原创 2019-09-22 15:43:42 · 144 阅读 · 0 评论 -
Python Cookbook 4.11 同时迭代多个序列
对于两个,或多个具有相同个数的列表,我们想要同步,对应地获取其中的元素,可以用到 zip 函数。list1 = [1, 2, 3]list2 = ['a', 'b', 'c']list3 = ['x', 'y', 'z']for item1, item2 in zip(list1, list2): print(item1, item2) 1 a2 b3 c如果是...原创 2019-09-22 14:58:24 · 157 阅读 · 0 评论 -
Python Cookbook 4.9 迭代所有可能的组合或者排列
关于 Python 里的排列与组合,会用到 itertools 的如下几个函数:permutations, combinations, combinations_with_replacement。items = [1, 2, 3]排列如果我们需要返回所有元素的排列,使用方法如下:from itertools import permutationsfor p in permutation...原创 2019-09-22 14:34:25 · 218 阅读 · 0 评论 -
Python Cookbook 4.8 跳过可迭代对象中的前一部分元素
在读取文件的时候,有时候会在开头有些注释掉的行,用来说明文件内容之类的,在用 Python 读取的时候,可以在读取之后,通过检查某些特征进行选取。比如开头是 # ,如果是开头是这个,可以舍弃,continue 读取下一行,在这里介绍一种方法, itertools.dropwhilefrom itertools import dropwhilewith open(path) as f: ...原创 2019-09-21 23:48:05 · 155 阅读 · 0 评论 -
Python Cookbook 4.1 手动访问可迭代对象中元素
对于读取一个文件的内容,比如文本的数据,在以前,因为文件内容不多,所以一般都是直接读取,比如:f = open(path, 'r')data = f.readlines()f.close()这种形式,看了书以后,发现可以使用 next() 函数逐行读取,操作方法如下:with open(path, encoding = 'utf-8') as f: while True: ...原创 2019-09-21 23:15:28 · 118 阅读 · 0 评论 -
Python Cookbook 1.13 通过公共键对字典列表排序
有一个列表如下,每一个元素都是字典,这些字典都有一个公共键,现在要根据这些公共键对这个列表进行排序,怎么办?rows = [{'fname': 'Brain', 'uid': 1003},{'fname': 'David', 'uid': 1002},{'fname': 'John', 'uid': 1001},{'fname': 'Big', 'uid': 1004}]如果是硬上,...原创 2019-04-20 14:53:07 · 174 阅读 · 0 评论 -
Python Cookbook 1.12 找出序列中出现次数最多的元素
对于一个列表,要统计出这个列表里的所有元素个数,可以使用 collections.Counter 这个模块。以下是使用示例:直接将一个列表作为参数放入 Counter 即可。from collections import Counterwords = ['a', 'b', 'v', 't', 'a', 'g', 'g', 'c', 'v', 'v', 'a', 'f']result =...原创 2019-04-20 12:38:24 · 196 阅读 · 0 评论 -
Python Cookbook 1.17 从字典中提取子集
利用字典推导式可以轻松解决。有如下字典:prices = {'a': 3, 'b': 5, 'c': 1, 'd': 9, 'e': 3}我们要将其中 value 值大于 4 的选出来,可以如此实现:{key:value for key, value in prices.items() if value > 3}Out[69]: {'b': 5, 'd': 9}后面的 if ...原创 2019-05-04 16:15:18 · 199 阅读 · 0 评论 -
Python Cookbook 1.16 筛选序列中的元素
找出列表中的正数:mylist = [1, 4, -5, 10, -7, 2, 3, -1][n for n in mylist if n > 0]Out[48]: [1, 4, 10, 2, 3]上面的方法叫做列表推导式,但是如果原始的输入非常大,可能会产生一个庞大的结果。如果这是你需要考虑的问题,可以使用生成器表达式通过迭代的方法产生筛选的结果。(n for n in m...原创 2019-05-04 16:09:36 · 154 阅读 · 0 评论 -
Python Cookbook 1.15 根据字段将记录分组
我们有如下一个字典列表,我们要将其按照元素的 date 字段进行分组:rows = [{'address': 'a', 'date': '2019-07-01'},{'address': 'b', 'date': '2019-07-04'},{'address': 'c', 'date': '2019-07-02'},{'address': 'd', 'date': '2019-07-0...原创 2019-05-04 15:50:53 · 135 阅读 · 0 评论 -
Python Cookbook 1.9 在两个字典中寻找相同点
这一节的内容其实就是通过字典的键找相同或者不同的键,。为什么可以这样实现呢,因为字典的 键 是唯一的,假设一个字典为 a,那么a.keys()就相当于一个集合,字典的键的操作就相当于集合的操作。a = {'x': 3, 'y': 6, 'z': 5}b = {'x': 7, 'y': 9, 'w': 9}a.keys() & b.keys()Out[67]: {'x', 'y'...原创 2019-04-13 21:34:52 · 141 阅读 · 0 评论 -
Python Cookbook 1.8 与字典有关的计算问题
有时候我们需要对一个字典进行各种计算,比如求取最大值、最小值以及排序等等。如下是一个字典,我们之前会怎么做呢?大概会是这样:prices = {'a': 123, 'b': 23, 'c':293, 'd': 67}min_value = 10000for key in prices.keys(): if min_value > prices[key]: ...原创 2019-04-10 00:44:27 · 119 阅读 · 0 评论 -
Python Cookbook 1.5 优先级队列,1.6 字典中将键映射到多个值上 1.7 让字典保持有序
1.5 优先级队列这一节讲的是通过使用 heapq 模块建一个类实现优先级队列, 然后进行 push 和 pop,看到这里,如果熟悉 deque 模块的话,马上就可以现代高 queue 里有个方法可以直接使用优先级队列, PriorityQueue,想了解可以直接查询官方文档,这里不做赘述。1.6 在字典中将键映射到多个值上看到这个标题就可以想到 collections.default() ...原创 2019-04-07 12:19:55 · 226 阅读 · 0 评论 -
Python Cookbook 1.4 找到最大或最小的 N 个元素
当我们需要在一个集合,或者列表中找到最大或最小的 N 个元素,这里我们用到的是 heapq 函数。1、列表heapq 模块中有两个函数 nlargest 和 nsmallest,可以接受一个数字 n 和列表作为参数,表示取其中最大或最小的 n 个数字。返回的是一个已经排好序的列表,包含最大或者最小的几个元素。2、字典列表heapq 还可以通过添加 key 参数作用于字典等更复杂的数据结...原创 2019-04-07 00:58:43 · 226 阅读 · 0 评论 -
Python Cookbook 4.16 用迭代器取代 while 循环
在我们读取一个文件的时候,前面使用的方法是 next() 函数逐行读取,或者 f.read() 不加参数 直接读出所有数据。或者我们也可以使用迭代的方法进行读取。示例如下:path = './task.txt'f = open(path, encoding='utf-8')for chunk in iter(lambda:f.read(10), ''): print(chunk,...原创 2019-09-22 21:35:35 · 174 阅读 · 0 评论