主要对数据结构进行简单介绍,至于其具体的数据结构相关的使用及函数另外文章再说明!!!
一、原始数据结构
1.integers -- 从负无穷大到无穷大的整数
2.float -- 有理数,使用时不用特别声明,python动态存储
3.string -- 字符串
4.Boolean -- True(1)和False(0)
5.decimal -- 十进制定点和浮点运算
主要是用于避免二进制精度问题,如1.1+2.2 = 3.30000003,而decimal加入了精度的概念,保留几位小数自定义。
6.fractions -- 分数
二、非原始数据结构
1.array -- python中很少用,可以不做了解
2.list -- 列表
stacks -- 堆栈是根据Last-In-First-Out(LIFO)概念插入和移除的对象的容器。
python通过列表实现,主要通过列表的两个函数append()和pop()。
# Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack = [1,2,3,4,5]
stack.append(6) # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 (Top)
print(stack)
# [1, 2, 3, 4, 5, 6]
stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 (Top)
print(stack)
# [1, 2, 3, 4]
Queue -- 队列是根据先进先出(FIFO)原则插入和移除的对象的容器。形象的比喻--排队买东西,最先排队的人买完了就最先走了。但用list实现起来效率慢,涉及到列表元素移动,一般不通过列表来实现。要实现队列可以用collections.deque
来实现。
from collections import deque
# first -> Eric -> John-> Michael (last)
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry") # first -> Eric -> John -> Michael -> Terry (last)
queue.append("Graham") # first -> Eric -> John -> Michael -> Terry -> Graham (last)
queue.popleft() # first -> John -> Michael -> Terry -> Graham (last)
queue.popleft() # first -> Michael -> Terry -> Graham (last)
print(queue) # deque(['Michael', 'Terry', 'Graham'])
Graphs -- 数学和计算机科学中的图是由节点组成的网络,节点也称为顶点,它们可以相互连接,也可以不相互连接。 连接两个节点的线或路径称为边。 如果边缘具有特定的流动方向,那么它是有向图,方向边缘被称为弧。 否则,如果未指定方向,则该图形称为无向图。这可能听起来非常理论化,当你深入挖掘时会变得相当复杂。 然而,图形是数据科学中特别重要的概念,通常用于模拟现实生活中的问题。 社会网络,化学和生物学的分子研究,地图,推荐系统都依赖于图形和图形理论原理。这有个Python实现图的例子:
graph = {"a": ["c", "d"],
"b": ["d", "e"],
"c": ["a", "e"],
"d": ["a", "b"],
"e": ["b", "c"]
}
def define_edges(graph):
edges = []
for vertices in graph:
for neighbour in graph[vertices]:
edges.append((vertices, neighbour))
return edges
print(define_edges(graph))
# [('a', 'c'), ('a', 'd'), ('b', 'd'), ('b', 'e'), ('c', 'a'), ('c', 'e'), ('e', 'b'), ('e', 'c'), ('d', 'a'), ('d', 'b')]
Trees -- 树有助于定义现实世界场景,并且从游戏世界到设计XML解析器,以及PDF设计原则都基于树。在数据科学中,“基于决策树的学习”实际上构成了一个大范围的研究。存在许多着名的方法,如装袋,提升使用树模型来生成预测模型。像国际象棋这样的游戏构建了一棵巨大的树,其中包含所有可能的动作来分析和应用启发式方法来决定最佳操作。
class Tree:
def __init__(self, info, left=None, right=None):
self.info = info
self.left = left
self.right = right
def __str__(self):
return (str(self.info) + ', Left child: ' + str(self.left) + ', Right child: ' + str(self.right))
tree = Tree(1, Tree(2, 2.1, 2.2), Tree(3, 3.1))
print(tree)
# 1, Left child: 2, Left child: 2.1, Right child: 2.2, Right child: 3, Left child: 3.1, Right child: None
3.tuple -- 元组
4.dictionary -- 字典
5.set -- 集合
6.file -- 文件