python cookbook 第一章 数据结构和算法(1.1-1.4)
程序员文章站
2022-05-28 13:26:40
...
1.1-1.2 解压序列赋值给多个变量
简单赋值语句赋值给变量即可,一切可迭代对象都可以,例如生成器。左边符号个数需要和右边元素个数相等,如果要删除不需要的变量,赋值无意义变量命即可。
个数不匹配会产生异常
a,b,c,d,e= (1,2,[3,4],'nihao',(5,6))
a = 1
b = 2
c = [3,4] #z,y = c ,z=3,y=4
d = 'nihao'
e = (5,6)
为了解决上边的问题,使用''*''来解决。使用*号加变量名代表任意数量个数的变量,并且赋值了一个数组。
a = (1,2,3,4,5,6)
x,*y,z = a
x= 1
z = 6
y = 2,3,4,5 #特殊例子:s = (1,2,(3,4)) a,*b,(*_,c)=s,a=1,b=2,c=4
1.3保存最后N个元素(内建模块collections 的deque函数)
使用队列来解决问题。
使用deque生成队列,并且自带appendleft,popleft函数,在队列两端插入数据复杂对0(1),在list两端复杂度为0(n)。
from collections import deque
q = deque([1,2,3])
q.appendleft(4)
q
deque[4,1,2,3] #deque(maxlen)超出Maxlen时,旧元素会被新元素给移除掉。
q = deque([1,2,3,4,5],maxlen=5)
q
deque(1,2,3,4,5)
q.append(1)
q
deque(2,3,4,5,1)
1.4 查找最大最小的N个元素
查找几个数,如果单个情况下,使用max,min函数即可,另外,设计概念:堆数据概念,即堆数据的第一个数据永远是最小值。
使用了heapq模块的两个函数,nlargest()
和 nsmallest()
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
cheap = heapq.nsmallest(3, portfolio, key=lambda s: s['price'])
cheap
cheap
[{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75}]
上一篇: Python Cookbook手记I
下一篇: Java基础知识点总结、四
推荐阅读
-
浅谈Python编程中3个常用的数据结构和算法
-
python开发总结(数据结构和算法)
-
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
-
Python-数据结构和算法之20问答
-
详解python数据结构和算法
-
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
-
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
-
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
-
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
-
Python cookbook(数据结构与算法)对切片命名清除索引的方法