数据结构基础
高级提示词工程师| 第二部分:编程和算法
| 第二节:数据结构基础
| 知识点详解:
列表(List)
- 列表可以存储任意类型的数据,包括数字、字符串、甚至其他列表。
- 列表是可变的,可以进行增加、删除、修改等操作。
- 列表索引从0开始。
1
2
3
4
5
6# 列表创建和基本操作
numbers = [1, 2, 3, 4, 5] # 创建列表
numbers.append(6) # 添加元素到列表末尾
num = numbers.pop(0) # 删除并返回列表首个元素
numbers.extend([7, 8]) # 将一个列表添加到当前列表末尾
print(numbers) # [2, 3, 4, 5, 6, 7, 8]元组(Tuple)
- 元组与列表类似,但是一旦创建就不能修改。
- 元组通常用于保护数据不被改变。
1
2
3
4# 元组创建和不可变性质
coordinates = (10, 20, 30) # 创建元组
print(coordinates) # (10, 20, 30)
# coordinates[0] = 15 # 这会抛出TypeError,元组是不可变的字典(Dictionary)
- 字典以键值对的形式存储数据,其中键是唯一的。
- 字典是可变的,可以添加、删除或修改键值对。
1
2
3
4
5
6
7
8
9# 字典创建和操作
person = {
'name': 'Alice',
'age': 25,
'job': 'Engineer'
} # 创建字典
person['age'] = 26 # 修改键值对
del person['job'] # 删除键值对
print(person.get('name')) # 'Alice', 使用get方法访问键值集合(Set)
- 集合是一个无序的不重复元素集。
- 集合可以进行数学上的集合操作,如并集、交集、差集。
1
2
3
4
5
6# 集合创建和基本操作
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2) # {1, 2, 3, 4, 5}
intersection_set = set1.intersection(set2) # {3}
difference_set = set1.difference(set2) # {1, 2}栈(Stack)
- 栈是一种后进先出(LIFO)的数据结构。
- 可以使用列表来实现栈。
1
2
3
4
5# 栈的实现
stack = []
stack.append('a') # push('a')
stack.append('b') # push('b')
print(stack.pop()) # pop() -> 'b'队列(Queue)
- 队列是一种先进先出(FIFO)的数据结构。
- 可以使用
collections.deque来高效实现队列。
1
2
3
4
5
6
7from collections import deque
queue = deque()
queue.append('item1') # enqueue('item1')
queue.appendleft('item0') # enqueue to the beginning
print(queue.pop()) # dequeue() -> 'item1'
print(queue.popleft()) # dequeue from the beginning -> 'item0'
检验问题:
问题一:创建一个包含前10个自然数的平方的列表,并打印出来。
问题二:给定一个包含重复元素的列表,如何使用集合去除重复元素?
问题三:如何遍历字典,并打印出所有的键和值?
问题四:如何检查一个元素是否存在于列表或字典中?
问题五:如何实现一个栈的基本操作,包括压栈(push)、弹栈(pop),并打印栈顶元素?
问题六:如何使用队列来实现一个打印任务的顺序执行,任务按照先来先服务的原则进行?
问题七:如何使用字典来存储班级中学生的姓名和成绩,并打印出每个学生的姓名和对应的成绩?
问题八:如何反转一个列表或元组?
问题九:如何对列表中的元素进行排序?
问题十:如何合并两个列表或字典,并处理键的冲突?
通过解答这些问题,你将能够检验自己对Python数据结构的理解和应用能力。每个问题都设计有针对性,帮助你掌握不同数据结构的特点和适用场景。
数据结构基础
http://example.com/2024/06/21/关卡2:数据结构基础/