Python Cookbook学习记录

本文深入探讨Python中数据结构和算法的实用技巧,包括序列分解、记录存储、查找最大最小元素、优先级队列实现及多值字典和有序字典的应用。通过具体示例,如使用deque进行历史记录搜索,heapq进行高效元素查找,以及利用defaultdict和OrderedDict进行数据管理。

Python Cookbook笔记

1.数据结构和算法
1.1分解序列
单独变量和序列元素个数相同

x, y = (1, 2)

1.2分解出N个元素

x, *y, z = [1, 2, 4, 5, 8]

1.3保存N项纪录

from colllections import deque
def search(lines, pattern, history=5):
	previous_line = deque(maxlen=history)
	for line in lines:
		if pattern in line:
			yield line, previous_line
			previous_line.append(line)

1.4找到最大或最小的N个元素

import heapq
nums = [1, 3, 4, -2, 4, 8, 9, 12, -2, 32]
#可接受key进行选择标准
ns = heapq.nsmallest(3, nums, key=None)
nl = heapq.nlargest(3, nums, key=None)
import heapq
nums = [1, 23, -3, 93, 32, -2, 93,4, 9, 4]
heap = list(nums)
heapq.heapify(heap)
heap.heappop()
heap.heappop()

1.5优先级队列

import heapq
class PriorityQueue():
	def __init__(self):
		self._queue = []
		self._index = 0
	def push(self, priority, item):
		#此处放进队列的是一个元组
		heapq.heappush(self._queue, (-priority, self._index, item))
		self._index += 1
	def pop(self):
		#此处取的是item
		heapq.heappop(self._queue)[-1]

1.6一建多值字典
一个键对应着一个元素容器

from collections import defaultdict
d = defaultdict(set)
#d = defaultdict(list)
d['a'].add(1)
d['a].add(2)
d['b'].add(3)

1.7有序字典
字典序列化或迭代时保持有序

from collections import OrderedDict
d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4
for key in d:
	print(key, d[key])
import json
print(json.dumps(d))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值