上海网站建设找哪家公司,一站式做网站哪家强,市场调研报告怎么写,电商专业培训网站建设0. 标题
Python专家编程系列: 8. 高级数据结构介绍 id:4
作者: quantgalaxyoutlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流1. 介绍
Python中#xff0c;除了大家常用的数据结构外#xff0c;还有几个非常好用的数据结构#xff0c;这里主要介绍下H…0. 标题
Python专家编程系列: 8. 高级数据结构介绍 id:4
作者: quantgalaxyoutlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流1. 介绍
Python中除了大家常用的数据结构外还有几个非常好用的数据结构这里主要介绍下Heap堆Deque双端队列Array数组。
2. 高级数据结构介绍
2.1 Heap堆
堆是一种基于树的数据结构用于实现称为优先队列的抽象数据类型。 二叉树通常用于实现堆堆主要有两种类型:
最小堆 根结点的键值是所有堆结点键值中最小者的堆。最大堆 根结点的键值是所有堆结点键值中最大者的堆。
python提供了heapq模块用于使用堆结构。
2.1.1 创建一个堆
import heapqlst [1,5,3,6,2]heapq.heapify(lst)print(lst)
#[1, 2, 3, 6, 5]2.1.2 给最小堆中添加一个元素
heapq.heappush(lst, 10)
heapq.heappush(lst, 20)print(lst)
#[1, 2, 3, 6, 5, 10, 20]2.1.3 从最小堆中移除最小元素
heapq.heappop(lst)
#1print(lst)
# [2, 5, 3, 6, 20, 10]2.1.4 查询堆中的最小的n个元素
heapq.nsmallest(3, lst)
# [2, 3, 5]2.1.5 查询堆中的n个最大元素
heapq.nlargest(1, lst)
# [20]作者: quantgalaxyoutlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流2.2 Deque双端队列
双端队列是栈和队列的泛化允许从两端进行追加和弹出操作。 它比列表更可取因为它在任何方向上的追加和弹出操作的时间复杂度都大约为0(1)。 另一方面对于pop(0)和insert(0, v)操作列表的时间复杂度为O(n)。
2.2.1 创建一个双端队列
from collections import deque# Create a new deque
d deque([1, 2, 3, 4])2.2.2 添加一个元素
# Add to the right end
d.append(5) # Add to the left end
d.appendleft(0)2.2.3 移除一个元素
# Remove from the right end
rightmost d.pop() # Remove from the left end
leftmost d.popleft()2.2.4 翻转一个双端队列
print(d)
# deque([1,2,3,4])d.reverse()print(d)
# deque([4,3,2,1])作者: quantgalaxyoutlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流2.3 Array数组
数组是一种数据结构它将元素存储在连续的内存位置中。 虽然列表可以存储异构数据(不同类型的数据)但数组存储同构项(在初始化时需要类型规范)这使得它们对于统一数据的大型数据集来说内存效率更高。 数组存储同构项(在初始化时需要类型规范)。一定要记住这是和list最大的不同。
当我们创建一个数组的时候需要指定数组元素的类型不同类型有不同的空间占用
b: signed char (1 byte)B: unsigned char (1 byte)i: signed int (2 bytes)f: float (4 bytes)d: double (8 bytes)
2.3.1 创建一个数组
from array import array # Create an array of integers
arr_int array(i, [1, 2, 3, 4, 5])# Create an array of floats
arr_float array(f, [1.0, 2.1, 3.2])2.3.2 往数组中添加一个元素
arr_int.append(6)2.3.3 加入多个元素
arr_int.extend([7, 8, 9])2.3.4 删除元素
last_element arr_int.pop() # Removes and returns the last elementelement_at_index_2 arr_int.pop(2) # Removes and returns the element at index 22.3.5 索引和切片操作
print(arr_int[0]) # First element
print(arr_int[-1]) # Last element
print(arr_int[2:5]) # Elements from index 2 (inclusive) to 5 (exclusive)注意如果希望使用多维数组并对数组进行高级数学或统计操作请选择Numpy数组。
3. 作者信息
作者: quantgalaxyoutlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流