![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python cookbook 学习笔记 第一章
百无一用生
这个作者很懒,什么都没留下…
展开
-
python cookbook 学习笔记 第一章 数据结构和算法(8)查找两字典的相同点
查找两字典的相同点问题:怎样在两个字典中寻找相同点(比如相同的键、相同的值等等)?解决方案考虑下面两个字典:a ={ "x": 1, "y": 2, "z": 3,}b = { "w": 10, "x": 11, "y&quo转载 2018-11-16 23:56:40 · 102 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(9)删除序列相同元素并保持顺序
删除序列相同元素并保持顺序问题:怎样在一个序列上吗保持元素顺序的同时消除重复的值?解决方案如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生产器来解决这个问题。比如:def dedupe(items): seen = set() for item in items: if item not in seen...转载 2018-11-17 00:01:55 · 123 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(10)命名切片
命名切片问题: 程序出现一大堆已经无法直视的硬编码切片下标,想清理下代码解决方案:假定有一段代码要从一个记录字符串几个固定位置提取出特定的数据字段(比如文件或类似格式)###### 0123456789012345678901234567890123456789012345678901234567890'record = '....................100 ...转载 2018-11-17 01:20:12 · 107 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(11)序列中出现次数最多的元素
序列中出现次数最多的元素问题怎样找出一个序列中出现次数最多的元素呢?解决方案:collections.Counter 类就是专门为这类问题而设计的,它甚至有一个有用的most.common()方法 直接给了你答案。-为了演示,先假设有一个单词列表并且想找出哪个单词出现频率最高。可以这样做:words = ['look', 'into', 'my', 'eyes', ...原创 2018-11-17 01:43:38 · 135 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(12)通过某个关键字排序一个字典列表
通过某个关键字排序一个字典列表问题:你有一个字典列表,你想根据某个或某几个字典字段来排序这个列表。解决方案:通过使用 operator 模块中的 itemgetter 函数,可以非常容易的排序这样的数据结构。假如你从数据 库中检索出来网站会员信息列表,并且以下列的数据结构返回:rows = [{'fname': 'Brian', 'lname': 'Jones', 'uid':...转载 2018-11-17 02:59:12 · 102 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(13)排序不支持原生比较的对象
问题想要排序类型相同的对象,但他们不支持原生的比较操作。解决方案内置的函数 sorted() 函数有一个关键字参数key,可以传入一个callable对象给它,这个callable对象 对每个传入的对象返回一个值,这个值会被sorted用来排序这些对象。比如,如果在应用程序里面有一个User 实例序列,并且希望通过他们的User_id属性来进行排序,可以提高一个以User实例作为输...转载 2018-11-17 03:54:28 · 101 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(14)通过某个字段将几率分组
通过某个字段将记录分组问题:有一个字典火实例的序列,然后像根据某个特定的字段比如date来分组迭代访问。解决方案:itertools.groupby() 函数对于这样的数据分组操作非常实用。假设有下列的字典列表:rows = [{'address': '5412 N CLARK', 'date': '07/01/2012'}, {'address': '5...转载 2018-11-17 18:23:49 · 89 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(15)过滤序列元素
过滤序列元素-** 问题**有一个数据序列,想利用以些规则从中提取出来需要的值或者是缩短序列。解决方案:最简单的过滤序列元素的方法就是使用列表推导。比如:mylist = [1, 4, -5, 10, -7, 2, 3, -1][n for n in mylist if n > 0] # [1, 4, 10, 2, 3][n for n in mylist ...转载 2018-11-17 18:29:59 · 128 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(16)从字典中提取子集
从字典中提取子集问题想要构造一个字典,它是另外一个字典的子集解决方案:最简单的方式是字典推导。比如:prices = { "ACME": 45.23, "AAPL": 612.78, "IBM": 205.55, "HPQ": 37.20, "FB": 10.75}p1 = {key: value for key, value...转载 2018-11-17 21:19:54 · 105 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(7)字典的运算
字典的运算问题:怎样在数据字典中执行一些计算操作(比如求最大值,最小值,排序等)?解决方案:考虑下面的股票名和价格映射字典:prices ={ "ACME": 45.23, "AAPL": 612.78, "IMB": 205.55, "HPQ":37.2, "FB"转载 2018-11-14 23:23:49 · 137 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(6)字典排序
字典排序问题:想要创建一个字典,并且在迭代或者序列化这个字典的时候,能控制元素的顺序。解决方案:为了能控制一个字典中元素的顺序,可以使用 collections 模块中的OrderedDict类。在迭代操作的时候它会保持元素被插入时的顺序,示例如下:from collections import OrderedDictdef ordered_dict(): d...转载 2018-11-14 23:24:04 · 110 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(1)解压序列赋值给多个变量
解压序列赋值给多个变量问题:有一个包含N个元素的元组或者序列,怎样将里面的值解压后同时赋给N个变量解决方案:任何的序列(或可迭代对象)都可以通过一个简单的赋值语句解压并赋值给多个变量。唯一的前提是变量的数量必须和序列元素的数量是一样的p = (4, 5)x, y = pprint(x) print(y) data = ["ACME",50,91.1,(2012,1...转载 2018-11-13 22:49:27 · 118 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(2) 保留最后N个元素
保留最后 N 个元素问题:在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录解决方案:保留有限历史记录正是 collections.deque 大显身手的时候。比如下面的代码,在多行上面做简单的文本匹配,并只返回在前 N 行匹配成功的行:from collections import dequedef search(lines, patt...转载 2018-11-13 22:49:49 · 112 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(3)查找最大或最小的N个元素
查找最大或者最小的 N 个元素问题:怎样从一个集合中获得最大或者最小的 N 个元素列表?解决方案:heapq 模块有两个函数:nlargest() 和 nsmallest()可以完美解决这个问题。import heapqnums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]print(heapq.nlargest(3,nums...转载 2018-11-13 22:50:06 · 106 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(4)实现一个优先级队列
实现一个优先级队列问题:怎样实现一个按优先级排序的队列?兵器在这个队列上面每次 pop 操作总返回优先级最高的那个元素解决方案:下面利用 heapq 模块实现一个简单的优先级队列:import heapqclass PriorityQueue(object): def __init__(self): self._queue = list()...转载 2018-11-13 22:50:22 · 153 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(5)字典中的键映射多个值
字典中的键映射多个值问题:怎样实现一个键对应多个值得字典(也叫multidict)?解决方案一个字典就是一个键对应一个单值的映射。如果想要一个键映射多个值,那么,就需要将这么多个 值放到另外的容器中,比如列表或者集合里。比如,可以像下面这样构造字典:d = { "a": [1, 2, 3], "b": [4, 5]}e = { &qu转载 2018-11-13 23:32:00 · 127 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(18)转换并同时计算数据
转换并同时计算数据问题:需要在数据序列上执行聚集函数(比如 sum(),min(),max()),但首先需要转换或过滤数据。解决方案:一个非常优雅的凡是去结合数据计算与转换就是使用生成器表达式参数。比如:nums = [1, 2, 3, 4, 5]s = sum(x*x for x in nums)print(s) # 55下面是更多的例子:import o...转载 2018-11-19 00:13:02 · 88 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(19)合并多个字典或映射
合并多个字典或映射问题:现在有多个字典,想从逻辑上合并为一个单一的映射后执行某些操作,比如查找值或者检查某些键是否存在解决方案:假如有如下两个字典:a = {"x": 1, "z": 3}b ={"y": 2, "z": 4}现在假设必须在两个字典中执行查找操作(比如先从a中找,如果找不到,再去b中找)。一个非常简单的解 决方案就是使用 collections 模...转载 2018-11-19 00:18:09 · 85 阅读 · 0 评论 -
python cookbook 学习笔记 第一章 数据结构和算法(17)映射名称到序列元素
映射名称到序列元素问题:有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使代码难以阅读,于是想通过名称来访问 元素。解决方案:collections.namedtuple() 函数通过使用一个普通的元组对象来解决这个问题。这个函数实际上是返回 Python中标准元组类型子类的一个工厂方法。需要传递一个类型名和需要的字段给它,他就会返回一个类。 可以初始化这个类,为定义...转载 2018-11-17 21:27:29 · 94 阅读 · 0 评论