文章目录
python的数据结构
- 列表 (List):一种有序的集合,可以包含多个项目。列表中的项目可以轻松地添加、删除或更改。
python
my_list = [1, 2, 3, 4, 5]
列表当做堆栈使用
堆栈是一种后进先出(Last In First Out, LIFO)的数据结构,允许你进行两个基本操作:
- 压栈(Push):将一个元素放入堆栈的顶部。
- 出栈(Pop):从堆栈的顶部移除一个元素。
由于列表支持索引操作,你可以轻松地模拟堆栈的行为。以下是如何将列表用作堆栈的示例:
python
# 创建一个空列表来模拟堆栈
stack = []
# 压栈操作
stack.append(1) # 堆栈: [1]
stack.append(2) # 堆栈: [1, 2]
stack.append(3) # 堆栈: [1, 2, 3]
# 出栈操作
print(stack.pop()) # 输出: 3,堆栈: [1, 2]
print(stack.pop()) # 输出: 2,堆栈: [1]
print(stack.pop()) # 输出: 1,堆栈: []
在上面的例子中,append()方法用于压栈,而pop()方法用于出栈。由于列表的索引是基于0的,所以当你从空列表开始压栈时,第一个元素将成为索引0的元素,第二个元素成为索引1的元素,依此类推。
如果你想要一个更传统的堆栈实现,你可以使用Python的内置数据结构deque(双端队列),它提供了一个名为append()的方法用于压栈,以及一个名为pop()的方法用于出栈。这通常比使用列表更有效率,因为deque是为了快速在两端添加和删除元素而优化的。
python
from collections import deque
# 创建一个空deque来模拟堆栈
stack = deque()
# 压栈操作
stack.append(1) # 堆栈: [1]
stack.append(2) # 堆栈: [1, 2]
stack.append(3) # 堆栈: [1, 2, 3]
# 出栈操作
print(stack.pop()) # 输出: 3,堆栈: [1, 2]
print(stack.pop()) # 输出: 2,堆栈: [1]
print(stack.pop()) # 输出: 1,堆栈: []
我们使用了collections.deque来创建一个堆栈。deque提供了类似于列表的方法,但是它的性能在两端添加和删除元素时通常会更好。
将列表当作队列使用
列表(List)也可以被用作队列(Queue),尽管它不是专门为队列这种先进先出(First In First Out, FIFO)的数据结构设计的。列表本身是可变的,并且不保证任何顺序的元素插入或删除操作的性能。然而,由于列表的灵活性,你仍然可以模拟队列的行为。
以下是如何将列表用作队列的示例:
python
# 创建一个空列表来模拟队列
queue = []
# 入队操作
queue.append(1) # 队列: [1]
queue.append(2) # 队列: [1, 2]
queue.append(3) # 队列: [1, 2, 3]
# 出队操作
print(queue.pop(0)) # 输出: 1,队列: [2, 3]
print(queue.pop(0)) # 输出: 2,队列: [3]
print(queue.pop(0)) # 输出: 3,队列: []
在这个例子中,append()方法用于入队,而pop(0)方法用于出队。由于列表的索引是基于0的,所以当你从空列表开始入队时,第一个入队的元素将成为索引0的元素,第二个入队的元素成为索引1的元素,依此类推。出队操作通过索引0来移除并返回队列中的第一个元素。
如果你想要一个更传统的队列实现,你可以使用Python的内置数据结构deque(双端队列),它提供了一个名为append()的方法用于入队,以及一个名为popleft()的方法用于出队。这通常比使用列表更有效率,因为deque是为了快速在两端添加和删除元素而优化的。
python
from collections import deque
# 创建一个空deque来模拟队列
queue = deque()
# 入队操作
queue.append(1) # 队列: [1]
queue.append(2) # 队列: [1, 2]
queue.append(3) # 队列: [1, 2, 3]
# 出队操作
print(queue.popleft()) # 输出: 1,队列: [2, 3]
print(queue.popleft()) # 输出: 2,队列: [3]
print(queue.popleft()) # 输出: 3,队列: []
在这个例子中,我们使用了collections.deque来创建一个队列。deque提供了类似于列表的方法,但是它的性能在两端添加和删除元素时通常会更好。
- 元组 (Tuple):一种不可变的有序集合。一旦创建,就不能修改元组中的元素。
python
my_tuple = (1, 2, 3, 4, 5)
- 集合 (Set):一种无序的集合,可以包含多个唯一的元素。集合用于去重和执行数学运算,如并集、交集和差集。
python
my_set = {1, 2, 3, 4, 5}
- 字典 (Dictionary):一种键值对的集合。字典中的每个键都映射到一个值。
python
my_dict = {'key1': 'value1', 'key2': 'value2'}
- 字符串 (String):不可变的文本数据。字符串可以用单引号('...')或双引号("...")表示。
python
my_string = "Hello, World!"
- 布尔值 (Boolean):有两个值,True 和 False。布尔值用于条件语句和逻辑运算。
python
my_bool = True
- None:表示无值的特殊常量。在 Python 中,None 是一个单例对象,用于表示空值或默认值。
python
my_none = None
- 字节对象 (Bytes):表示字节数据的序列。字节对象通常用于处理二进制数据。
python
my_bytes = b"Hello, World!"
- 字节数组 (bytearray):表示可变的字节序列。字节数组可以用于读写二进制数据。
python
my_bytearray = bytearray(b"Hello, World!")
- 范围 (Range):表示一个整数序列的范围。范围对象通常用于循环。
python
my_range = range(5)