掌握Python核心数据结构
欢迎来到Python数据结构单元!在本单元中,你将学习Python中常用的数据结构,这些是构建复杂程序的基础。
数据结构是存储和组织数据的方式,选择合适的数据结构可以提高程序的效率和可读性。本单元将详细介绍Python中最常用的数据结构,包括列表、元组、字典和集合。
列表是Python中最常用的数据结构之一,它可以存储多个元素,并且可以修改。
# 创建列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
numbers = [1, 2, 3, 4, 5]
mixed = ["苹果", 1, True, 3.14]
# 访问列表元素
print(fruits[0]) # 苹果
print(fruits[-1]) # 葡萄
# 切片操作
print(fruits[1:3]) # ["香蕉", "橙子"]
print(fruits[:2]) # ["苹果", "香蕉"]
print(fruits[2:]) # ["橙子", "葡萄"]
# 修改列表
fruits[0] = "草莓"
print(fruits) # ["草莓", "香蕉", "橙子", "葡萄"]
# 添加元素
fruits.append("梨")
print(fruits) # ["草莓", "香蕉", "橙子", "葡萄", "梨"]
# 插入元素
fruits.insert(1, "桃子")
print(fruits) # ["草莓", "桃子", "香蕉", "橙子", "葡萄", "梨"]
# 删除元素
fruits.remove("香蕉")
print(fruits) # ["草莓", "桃子", "橙子", "葡萄", "梨"]
# 弹出元素
popped = fruits.pop()
print(popped) # 梨
print(fruits) # ["草莓", "桃子", "橙子", "葡萄"]
# 列表长度
print(len(fruits)) # 4
# 排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()
print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
# 反转
fruits.reverse()
print(fruits) # ["葡萄", "橙子", "桃子", "草莓"]
元组与列表类似,但元组是不可修改的(immutable)。
# 创建元组
tuple1 = (1, 2, 3)
tuple2 = ("苹果", "香蕉", "橙子")
tuple3 = (1, "苹果", True)
# 访问元组元素
print(tuple2[0]) # 苹果
print(tuple2[-1]) # 橙子
# 切片操作
print(tuple2[1:3]) # ("香蕉", "橙子")
# 元组长度
print(len(tuple1)) # 3
# 注意:元组不可修改
# tuple1[0] = 4 # 这会报错
# 元组的优点:占用内存少,访问速度快,可作为字典的键
# 单元素元组需要加逗号
single_tuple = (42,)
print(type(single_tuple)) # <class 'tuple'>
# 元组解包
x, y, z = tuple1
print(x, y, z) # 1 2 3
字典是一种键值对(key-value)数据结构,通过键来访问值。
# 创建字典
student = {
"name": "小明",
"age": 18,
"grade": "高三",
"scores": {"语文": 90, "数学": 85, "英语": 95}
}
# 访问字典值
print(student["name"]) # 小明
print(student.get("age")) # 18
# 使用get方法访问不存在的键
print(student.get("gender", "未知")) # 未知
# 修改字典
student["age"] = 19
print(student["age"]) # 19
# 添加新键值对
student["gender"] = "男"
print(student["gender"]) # 男
# 删除键值对
removed = student.pop("grade")
print(removed) # 高三
print(student) # {'name': '小明', 'age': 19, 'scores': {'语文': 90, '数学': 85, '英语': 95}, 'gender': '男'}
# 获取所有键
print(student.keys()) # dict_keys(['name', 'age', 'scores', 'gender'])
# 获取所有值
print(student.values()) # dict_values(['小明', 19, {'语文': 90, '数学': 85, '英语': 95}, '男'])
# 获取所有键值对
print(student.items()) # dict_items([('name', '小明'), ('age', 19), ('scores', {'语文': 90, '数学': 85, '英语': 95}), ('gender', '男')])
# 遍历字典
for key, value in student.items():
print(f"{key}: {value}")
集合是一种无序的、不包含重复元素的数据结构。
# 创建集合
set1 = {1, 2, 3, 4, 5}
set2 = {"苹果", "香蕉", "橙子"}
# 从列表创建集合
set3 = set([1, 2, 2, 3, 3, 3])
print(set3) # {1, 2, 3} # 自动去重
# 添加元素
set1.add(6)
print(set1) # {1, 2, 3, 4, 5, 6}
# 删除元素
set1.remove(3)
print(set1) # {1, 2, 4, 5, 6}
# 集合运算
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
# 并集
print(set_a | set_b) # {1, 2, 3, 4, 5, 6}
# 交集
print(set_a & set_b) # {3, 4}
# 差集
print(set_a - set_b) # {1, 2}
print(set_b - set_a) # {5, 6}
# 对称差集
print(set_a ^ set_b) # {1, 2, 5, 6}
# 集合长度
print(len(set1)) # 5
# 检查元素是否在集合中
print(2 in set1) # True
print(3 in set1) # False
字符串是Python中常用的数据类型,有许多内置方法。
# 创建字符串
s = "Hello, Python!"
# 访问字符
print(s[0]) # H
print(s[-1]) # !
# 切片
print(s[0:5]) # Hello
print(s[7:]) # Python!
# 字符串长度
print(len(s)) # 13
# 字符串方法
print(s.upper()) # HELLO, PYTHON!
print(s.lower()) # hello, python!
print(s.title()) # Hello, Python!
# 查找子字符串
print(s.find("Python")) # 7
print(s.find("Java")) # -1
# 替换
print(s.replace("Python", "World")) # Hello, World!
# 分割
print(s.split(", ")) # ["Hello", "Python!"]
# 去除空白
ss = " Hello, Python! "
print(ss.strip()) # Hello, Python!
# 检查字符串开头和结尾
print(s.startswith("Hello")) # True
print(s.endswith("!")) # True
# 格式化字符串
name = "小明"
age = 18
print(f"我的名字是{name},今年{age}岁")
print("我的名字是{},今年{}岁".format(name, age))
print("我的名字是%s,今年%d岁" % (name, age))
编写一个程序,创建一个包含10个随机整数的列表,然后:
编写一个程序,创建一个学生信息字典,包含姓名、年龄、成绩等信息,然后:
编写一个程序,创建两个集合,然后:
编写一个程序,输入一个字符串,然后:
《Python编程:从入门到实践》
《Python基础教程》
Python官方文档 - 数据结构
菜鸟教程 - Python数据结构
Anaconda
Jupyter Notebook