第六课 数据结构
数据结构是计算机存储、组织数据的方式。
前面学习的变量,如数字,字符串是最简单的数据机构。
为了解决更多有趣的问题,我们需要引入更多巧妙设计的数据结构。编程 = 数据结构 + 算法 稍稍有点挑战 加油哟!
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型,它可以一次存储若干变量。
# 列表初始化
a = [] # 初始化一个空列表
print(a) # 输出:[]
a = [1, 3, 5] # 初始化一个包含元素 1, 3, 5 的列表
print(a) # 输出:[1, 3, 5]
a = [0] * 10 # 初始化大小为 10,元素都为 0 的列表
print(a) # 输出:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 列表增加类操作
a = [1, 3, 5] # 列表长度
print(len(a)) # 输出:3
a.append(7) # 列表尾部增加一个元素 7
print(a) # 输出:[1, 3, 5, 7]
a.insert(3, 99) # 列表在索引 3 处插入一个元素 99
print(a) # 输出:[1, 3, 5, 99, 7]
# 列表删除类操作
a.pop(3) # 删除索引 3 处的元素
print(a) # 输出:[1, 3, 5, 7]
b = a.pop(2) # 取出列表索引 2 处的元素
print(a) # 输出:[1, 3, 7]
print(b) # 输出:5
#列表修改类操作
a[2] = 77 # 修改列表索引 2 处元素
print(a) # 输出:[1, 3, 77]
#列表查找类操作
b = a[0] # 访问列表索引 0 处元素
print(b) # 输出:1
b = a[-1] # 访问列表最后一个元素
print(b) # 输出:77
b = a[1:4] # 访问列表索引 1到3 处元素 即a[1]、a[2]、a[3]
print(b) # 输出:[3, 77]
for i in a: # 遍历列表
print(i, end=" ") # 输出:1 3 77
print()
# 列表拼接
a = [1, 3, 5]
b = [7, 9]
print(a+b) # 输出:[1, 3, 5, 7, 9]
#二维列表
n, m = 3, 4
a = [[0] * m for _ in range(n)] # 初始化二维列表,n 行 m 列,元素都为 0
print(a) # 输出:[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,常用于存储不需要更改的数据。
# 元组与列表操作类似 其他操作参考列表
a = (1, 3, 5) # 元组
print(len(a)) # 输出:3
print(a[2]) # 输出:5
Dictionary(字典)
字典是一种映射类型,是无序{键(key):值(value)}的集合。字典是无序的对象集合,列表是有序的对象集合。字典当中的元素是通过键来存取,列表中的元素是通过偏移存取。
# 字典初始化
a = {'k1': 'v1','k2':2, 'k3': 'v3'}
# 字典增加类操作
a['k4'] = 'v4' # 增加键值
print(a) # 输出:{'k1': 'v1', 'k2': 2, 'k3': 'v3', 'k4': 'v4'}
# 字典删除类操作
a.pop('k4') # 删除索引 3 处的元素
print(a) # 输出:{'k1': 'v1', 'k2': 2, 'k3': 'v3'}
b = a.pop('k3') # 取出字典KEY k3 处的元素
print(a) # 输出:{'k1': 'v1', 'k2': 2}
print(b) # 输出:v3
# 字典修改类操作
a['k2'] = 'v2' # 修改字典KEY k2 处的元素
print(a) # 输出:{'k1': 'v1', 'k2': 'v2'}
# 字典查找类操作
print(a['k1']) # 输出:v1
for i in a: # 遍历字典的key
print(i, end=" ") # 输出:k1 k2
print()
for i in a: # 遍历字典的value
print(a[i], end=" ") # 输出:v1 v2
print()
Set(集合)
集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素。常用于去重和快速查询元素是否存在。集合使用大括{}表示。
a = {'a1', 'a2', 'a3', 'a4'} # 集合a
b = {'a1', 'a2', 'a5', 'a6'} # 集合b
c = set() # 空集合
#常规操作
print(len(a)) # 输出:4
a.add('a5') # 增加元素
print(a) # 输出:{'a1', 'a2', 'a3', 'a4', 'a5'}
a.discard('a5') # 删除元素 2 discard 不存在的元素不会报错
print(a) # 输出:{'a1', 'a2', 'a3', 'a4'}
if 'a1' in a : # 判断元素是否在集合中
print('Yes') # 输出:Yes
else :
print('No')
#集合核心操作 交、差、并、补
c = a & b # a和b的交集 即:a和b都存在的元素
print(c) # 输出:{'a2', 'a1'}
c = a - b # a和b的差集 即:a去除b含有的元素 剩下的元素
print(c) # 输出:{'a3', 'a4'}
c = a | b # a和b的并集 即:a或b存在的元素 组合在一起
print(c) # 输出:{'a3', 'a1', 'a4', 'a6', 'a2', 'a5'}
c = a ^ b # a和b的补集 即:a、b不同时存在元素 组合在一起
print(c) # 输出:{'a3', 'a4', 'a6', 'a5'}