python cookbook
郑能量的王老汉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
011优美的命名切片slice
你的工程中可能包含了很多难以直观的理解的硬编码切片,例如s[1:3] 。对代码的美观、阅读及其维护会造成一定程度的困扰。下面介绍如何使用切片对象来代替硬编码切片。首先看一下对比s = '0123456789's1 = s[1:3]s2 = s[3:]s3 = s[:3]s4 = s[1:8:2]slice_1 = slice(1, 3)slice_2 = slice(3, None)slice_3 = slice(3)slice_4 = slice(1, 8, 2)equal原创 2020-11-27 23:50:45 · 246 阅读 · 0 评论 -
010删除序列重复元素并保持顺序
在一个序列上面保持元素顺序的同时消除重复的值。看到这个标题,是不是会想到使用set() ,但是set()生成的结果顺序会被打乱,达不到保持顺序的目的。如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题。hashlib定义如下An object is hashable if it has a hash value which never changesduring its lifetime (it needs a hash() method), and c原创 2020-11-27 23:39:10 · 446 阅读 · 2 评论 -
009查找两字典的相同点
查找多个(大于等于2)字典的相同的值、相同的键。字典数据a = { 'x': 1, 'y': 2, 'z': 3}b = { 'x': 11, 'y': 2, 'w': 10}获取字典数据的相关操作输出不是list对象,如需使用列表格式请使用list()转换。print(a.keys())print(a.values())print(a.items())<OUTPUT>dict_keys(['x', 'y', 'z'])原创 2020-11-27 23:33:23 · 236 阅读 · 0 评论 -
008字典的运算
字典运算的核心是把字典转为合适的元组,然后对元组进行各种类型的操作。首先,我们一起来了解下zip()这个内置函数的用法。zip()用来把多个对象中的元素打包为一个个元组,input为可迭代对象,output为迭代器。a = [1, 2, 3]b = ['a', 'c', 'd', 'e']c = ['b', 'f', 'd', 'h', 'g']case1 = zip(a, b)print(f'List zip function case1: {list(case1)}')case2 = z原创 2020-11-27 23:29:11 · 301 阅读 · 0 评论 -
007有序字典(OrderDict)
在py3.6之后,字典都为有序,如果您使用的python>=3.6,可以无视这篇文章。有序,是指按照初始添加的顺序进行排序。有序字典可以通过来实现,声明后,其实例对象的用法与普通字典一样。from collections import OrderedDictimport jsond = OrderedDict()d['name'] = 'DaMing'd['age'] = 20d['number'] = 100d['mobil'] = '10233933333'print(f'in原创 2020-11-27 23:22:40 · 1638 阅读 · 0 评论 -
006多值字典生成(defaultdict)
要想把字典的键映射到多个值 ,需要把值保存到另一个容器中;比如:列表、集合,使用列表还是集合取决于你是否希望消除重复元素。eg. 多值字典{ "name": "DaMing", "mobile": ["6583243", "6489877"], "tag": {"student", "boy"}}先声明一下defaultdict的基础使用d = defaultdict(list)d['number'].append(110)d['number'].append(120)s原创 2020-11-27 23:20:25 · 228 阅读 · 0 评论 -
005实现一个优先级队列(举例)
实现一个优先级队列,能够以给定的优先级对队列进行排序,每次的pop操作都返回优先级最高的那个元素。首先,一起了解下heapq这个库的用法。heapq.heapify(x)将list x 转换成堆,原地,线性时间内import heapqheap = [1, 3, 5, 9, 3, 5, 3, 7, 2]heapq.heapify(heap)print(f'heap: {heap}')<OUTPUT>heap: [1, 2, 3, 3, 3, 5, 5, 7, 9]2 .原创 2020-11-27 23:18:35 · 435 阅读 · 1 评论 -
004找到最大或者最小的N个元素
heapq模块中的nlargest和nsmallest可以很方便的解决这个问题。nlargrst(int, [list|tuple|set|str])返回值类型 listimport heapqnumbers = [1, 2, 4, 6, -4, -3, -9, 9, 2, 8]large_nums = heapq.nlargest(3, numbers)small_nums = heapq.nsmallest(3, numbers)print(f'large nums: {la原创 2020-11-27 23:16:28 · 354 阅读 · 0 评论 -
003 保存最后N个元素
collections.deque可以完美的解决这个问题explanation:deque 可以创建一个固定长度的队列。有新的数据插入且队列已经满时,自动删除最老的一条数据。基础用法如下# 用法# 声明一个长度等于3的队列# deque也可以不声明长度 q = deque()q = deque(maxlen=3)# 在队列中后面追加数据q.append('a')q.append('b')q.append('c')q.append('d')print(f'01:{q}')# 在队列原创 2020-11-27 23:13:34 · 201 阅读 · 0 评论 -
002 从任意长度可迭代对象分解元素
从可迭代对象中分解出N个元素,这个过程不需要知道N的长度或者具体内容是什么,你只需要知道需要哪部分内容就可以了。可以使用*表达式来实现,具体case如下这里我们以log的获取举例说明# case1,可迭代对象分解的基本操作case1 = ('2020-08-10', '192.168.0.177', 'log1', 'log2', 'log3')date, ip, *logs = case1print(f'case1 res -> {date}; {ip}; {logs}')# cas原创 2020-11-27 23:10:10 · 177 阅读 · 0 评论 -
001 挖透序列分解
001 挖透序列分解所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。序列 <-> sequence聊序列分解之前,首先说一下序列有哪些,序列包含:Str,List,Tuple,Dict,Set。下面我们逐个来看下对不同类型的序列的分解。Listcase1 = [1, '2']a, b = case1print(f'case1 res -> {a}; {b}')Strcase2 = '123'a原创 2020-11-21 21:27:25 · 209 阅读 · 0 评论
分享