第五章:Python数据结构(python数据结构代码)

5.1 列表(List)

5.1.1 理论知识

列表是Python中最常用的数据结构之一,它是一个有序的可变序列,可以包含不同类型的元素。列表使用方括号 [] 来表示,元素之间用逗号分隔。

列表的特点包括:

  • 有序性:列表中的元素按照定义或插入的顺序排列,每个元素都有对应的索引,从 0 开始。
  • 可变性:可以对列表进行修改、添加、删除元素等操作。

5.1.2 示例代码

# 创建列表
fruits = ['apple', 'banana', 'cherry']
print("原始列表:", fruits)

# 通过索引访问元素
first_fruit = fruits[0]
print("第一个水果:", first_fruit)

# 修改元素
fruits[1] = 'orange'
print("修改后的列表:", fruits)

# 添加元素
fruits.append('grape')
print("添加元素后的列表:", fruits)

# 删除元素
del fruits[2]
print("删除元素后的列表:", fruits)

5.1.3 代码解释

  • 首先创建了一个包含三种水果的列表 fruits 并打印。
  • 使用索引 0 访问列表的第一个元素,并将其赋值给 first_fruit 后打印。
  • 通过索引 1 修改列表中的元素,将 'banana' 替换为 'orange' 并打印修改后的列表。
  • 使用 append() 方法在列表末尾添加 'grape' 并打印新列表。
  • 使用 del 语句删除索引为 2 的元素,然后打印删除元素后的列表。

5.2 元组(Tuple)

5.2.1 理论知识

元组也是一个有序的序列,但与列表不同,元组是不可变的,一旦创建就不能修改其元素。元组使用圆括号 () 来表示,元素之间用逗号分隔。

元组的不可变性使得它在需要保护数据不被意外修改的场景下很有用,例如作为字典的键,或者存储一些不应该被改变的数据。

5.2.2 示例代码

# 创建元组
point = (10, 20)
print("原始元组:", point)

# 通过索引访问元素
x = point[0]
y = point[1]
print("元组中的 x 坐标:", x)
print("元组中的 y 坐标:", y)

# 尝试修改元组(这会导致错误)
# point[0] = 15  # 取消注释这行代码会引发 TypeError

5.2.3 代码解释

  • 创建了一个表示坐标点的元组 point 并打印。
  • 通过索引分别获取元组中的 x 和 y 坐标并打印。
  • 尝试修改元组元素的代码被注释掉了,因为如果取消注释,Python 会抛出 TypeError,提示元组不支持元素赋值,这体现了元组的不可变性。

5.3 集合(Set)

5.3.1 理论知识

集合是一个无序的、不包含重复元素的可变数据结构。集合使用花括号 {} 或者 set() 函数来创建。

集合的主要应用场景包括去重、成员检测以及集合运算(如并集、交集、差集等)。

5.3.2 示例代码

# 创建集合
numbers = {1, 2, 2, 3, 4, 4}
print("去重后的集合:", numbers)

# 添加元素
numbers.add(5)
print("添加元素后的集合:", numbers)

# 删除元素
numbers.remove(3)
print("删除元素后的集合:", numbers)

# 集合运算
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
intersection_set = set1.intersection(set2)
difference_set = set1.difference(set2)
print("并集:", union_set)
print("交集:", intersection_set)
print("差集:", difference_set)

5.3.3 代码解释

  • 创建集合 numbers 时,重复元素 2 和 4 被自动去重,打印去重后的集合。
  • 使用 add() 方法向集合中添加元素 5 并打印新集合。
  • 使用 remove() 方法从集合中删除元素 3 并打印删除后的集合。
  • 创建两个集合 set1 和 set2,分别进行并集、交集和差集运算,并打印结果。union() 方法返回两个集合的并集,intersection() 方法返回交集,difference() 方法返回 set1 中存在但 set2 中不存在的元素组成的差集。

5.4 字典(Dictionary)

5.4.1 理论知识

字典是Python中的一种无序的键值对(key - value)数据结构。每个键值对中的键必须是唯一的,而值可以是任意类型的数据。字典使用花括号 {} 来表示,键值对之间用逗号分隔,键和值之间用冒号 : 分隔。

字典的优点在于能够快速地根据键查找对应的值,时间复杂度通常为 O(1),这使得它在需要频繁查找数据的场景下非常高效。

5.4.2 示例代码

# 创建字典
person = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
print("原始字典:", person)

# 通过键访问值
name = person['name']
print("姓名:", name)

# 修改值
person['age'] = 26
print("修改后的字典:", person)

# 添加键值对
person['job'] = 'Engineer'
print("添加键值对后的字典:", person)

# 删除键值对
del person['city']
print("删除键值对后的字典:", person)

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")

5.4.3 代码解释

  • 创建了一个表示人的信息的字典 person 并打印。
  • 通过键 'name' 访问字典中的值并打印。
  • 通过键 'age' 修改对应的值,然后打印修改后的字典。
  • 添加新的键值对 'job': 'Engineer' 并打印新字典。
  • 使用 del 语句删除键 'city' 及其对应的值,然后打印删除后的字典。
  • 使用 items() 方法遍历字典,同时获取键和值,并逐行打印。

5.5 数据结构的相互转换

5.5.1 理论知识

Python 允许在不同的数据结构之间进行转换,这在处理数据时非常有用。例如,可以将列表转换为集合以去除重复元素,或者将元组转换为列表以进行修改等。

5.5.2 示例代码

# 列表转集合
my_list = [1, 2, 2, 3]
my_set = set(my_list)
print("列表转集合:", my_set)

# 集合转列表
new_list = list(my_set)
print("集合转列表:", new_list)

# 列表转元组
my_tuple = tuple(my_list)
print("列表转元组:", my_tuple)

# 元组转列表
back_to_list = list(my_tuple)
print("元组转列表:", back_to_list)

# 字典转列表(获取键列表)
my_dict = {'a': 1, 'b': 2}
keys_list = list(my_dict.keys())
print("字典转键列表:", keys_list)

# 字典转列表(获取值列表)
values_list = list(my_dict.values())
print("字典转值列表:", values_list)

5.5.3 代码解释

  • 将包含重复元素的列表 my_list 转换为集合 my_set,实现去重,并打印结果。
  • 将集合 my_set 转换回列表 new_list 并打印。
  • 将列表 my_list 转换为元组 my_tuple 并打印。
  • 将元组 my_tuple 转换回列表 back_to_list 并打印。
  • 使用 keys() 方法获取字典 my_dict 的键,并将其转换为列表 keys_list 后打印。
  • 使用 values() 方法获取字典 my_dict 的值,并将其转换为列表 values_list 后打印。
原文链接:,转发请注明来源!