大家好!作为Python知识分享博主,今天我们继续Python入门系列教程。我将按照从易到难的顺序,带领大家系统学习Python的四种核心数据类型:字符串、列表、元组和字典。每种数据类型后都有针对性练习和思考题,帮助大家巩固知识。
一、Python字符串(String) - 文本处理基础
1. 创建与基本操作
# 三种创建方式
name = "PYTHON"
greeting = 'Hello, Python!'
multiline = """这是一个
多行字符串"""
# 访问字符
print(name[0]) # 输出: P (索引从0开始)
print(greeting[-1]) # 输出: ! (负索引表示从末尾开始)
# 字符串切片
text = "PythonProgramming"
print(text[0:6]) # Python
print(text[6:]) # Programming
print(text[::2]) # PtoPormig (步长为2)
2. 常用字符串方法
# 大小写转换
print("python".upper()) # PYTHON
# 查找与替换
sentence = "I love Python programming"
print(sentence.find("Python")) # 7 (返回索引位置)
print(sentence.replace("love", "enjoy")) # I enjoy Python programming
# 分割与连接
fruits = "apple,banana,orange"
print(fruits.split(",")) # ['apple', 'banana', 'orange']
print("-".join(["2023", "08", "15"])) # 2023-08-15
# 格式化字符串
name, age = "Bob", 30
print(f"{name} is {age} years old") # Bob is 30 years old
# 使用空格分割
text = "Hello world, how are you?"
words = text.split()
print(words) # 输出: ['Hello', 'world,', 'how', 'are', 'you?']
# 使用逗号分割
csv_line = "apple,banana,orange"
fruits = csv_line.split(',')
print(fruits) # 输出: ['apple', 'banana', 'orange']
# 限制分割次数
ip_address = "192.168.1.1"
parts = ip_address.split('.', 2) # 最多分割2次
print(parts) # 输出: ['192', '168', '1.1']
# 处理连续分隔符
text = "a,,b,c"
items = text.split(',')
print(items) # 输出: ['a', '', 'b', 'c']
# 不指定分隔符(自动处理多种空白字符)
mixed_text = "Hello\tworld\nPython"
tokens = mixed_text.split()
print(tokens) # 输出: ['Hello', 'world', 'Python']
3. 字符串总结
-
不可变性:字符串创建后不能修改
-
有序性:字符按顺序存储,可通过索引访问
-
常用场景:文本处理、用户输入、数据格式化
4. 字符串练习题
-
反转字符串:"Hello" → "olleH"
-
统计字符串中字母"a"出现的次数
-
将"first_name last_name"格式转换为"last_name, first_name"
二、Python列表(List) - 动态数据集合
1. 创建与基本操作
# 创建列表
numbers = [1, 2, 3, 4, 5]
fruits = ["apple", "banana", "cherry"]
mixed = [1, "two", 3.0, True]
# 访问元素
print(fruits[1]) # banana
print(numbers[-1]) # 5
# 列表切片
print(numbers[1:4]) # [2, 3, 4]
print(numbers[::-1]) # [5, 4, 3, 2, 1] (反转列表)
2. 修改列表
# 添加元素
fruits.append("orange") # 末尾添加
fruits.insert(1, "mango") # 指定位置插入
# 修改元素
fruits[0] = "kiwi" # 替换第一个元素
# 删除元素
fruits.remove("banana") # 按值删除
del fruits[0] # 按索引删除
popped = fruits.pop() # 删除并返回最后一个元素
3. 列表常用方法
# 排序与反转
nums = [3, 1, 4, 2]
nums.sort() # [1, 2, 3, 4]
nums.reverse() # [4, 3, 2, 1]
# 列表操作
print(len(nums)) # 4 (长度)
print(2 in nums) # True (成员检查)
# 列表合并
list1 = [1, 2]
list2 = [3, 4]
combined = list1 + list2 # [1, 2, 3, 4]
4. 列表总结
-
可变性:列表创建后可修改
-
有序性:元素按顺序存储
-
异构性:可包含不同类型元素
-
常用场景:数据集合、循环处理、临时存储
5. 列表练习题
-
找出列表中的最大值:[3, 7, 2, 9, 5]
-
移除列表中的重复元素:[1, 2, 2, 3, 4, 4, 5]
-
将二维列表转置:[[1,2,3],[4,5,6]] → [[1,4],[2,5],[3,6]]
三、Python元组(Tuple) - 不可变数据容器
1. 创建与基本操作
# 创建元组
coordinates = (10, 20)
colors = ("red", "green", "blue")
single = (5,) # 单元素元组必须有逗号
# 访问元素
print(colors[1]) # green
# 元组解包
x, y = coordinates
print(f"X: {x}, Y: {y}") # X: 10, Y: 20
# 元组不可变(尝试修改会报错)
# coordinates[0] = 15 # TypeError
2. 元组常用操作
# 元组合并
tuple1 = (1, 2)
tuple2 = (3, 4)
combined = tuple1 + tuple2 # (1, 2, 3, 4)
# 元组与列表转换
fruits_list = ["apple", "banana"]
fruits_tuple = tuple(fruits_list)
3. 元组总结
-
不可变性:创建后不能修改
-
有序性:元素按顺序存储
-
轻量级:比列表更高效
-
常用场景:固定数据集合、字典键、函数返回多个值
4. 元组练习题
-
交换两个变量的值:a=5, b=10 → a=10, b=5
-
返回函数多个计算结果(面积和周长)
-
创建坐标点的元组,并计算两点间距离
四、Python字典(Dict) - 键值对数据结构
1. 创建与基本操作
# 创建字典
student = {
"name": "Alice",
"age": 20,
"courses": ["Math", "Physics"]
}
# 访问元素
print(student["name"]) # Alice
print(student.get("age", "N/A")) # 20 (安全访问)
# 添加/修改元素
student["email"] = "alice@example.com" # 添加
student["age"] = 21 # 修改
2. 字典常用方法
# 遍历字典
for key, value in student.items():
print(f"{key}: {value}")
# 获取键、值
keys = student.keys() # ['name', 'age', ...]
values = student.values()
# 删除元素
del student["courses"] # 删除键值对
age = student.pop("age") # 删除并返回值
3. 字典总结
-
键值对结构:无序的数据集合
-
可变性:创建后可修改
-
键唯一性:键必须是不可变类型且唯一
-
常用场景:JSON数据处理、配置信息、快速查找
4. 字典练习题
-
合并两个字典:dict1={"a":1}, dict2={"b":2} → {"a":1,"b":2}
-
统计字符串中各字符出现频率
-
实现简单的学生成绩管理系统(添加、查询、删除)
五、四种数据类型对比总结
| 特性 | 字符串 | 列表 | 元组 | 字典 |
|---|---|---|---|---|
| 可变性 | 不可变 | 可变 | 不可变 | 可变 |
| 有序性 | 是 | 是 | 是 | 否 (Python 3.7+有序) |
| 元素类型 | 字符 | 任意 | 任意 | 键值对 |
| 创建语法 | ' ' " " | [ ] | ( ) | { } |
| 典型用途 | 文本处理 | 动态集合 | 固定数据 | 关联数据 |
| 内存效率 | 高 | 中 | 高 | 低 |
| 访问速度 | O(1) | O(1) | O(1) | O(1) |
六、综合应用项目:学生管理系统
# 初始化学生数据库
students = {
101: {"name": "Alice", "age": 20, "grade": "A"},
102: {"name": "Bob", "age": 21, "grade": "B"},
103: {"name": "Charlie", "age": 19, "grade": "A-"}
}
def add_student(student_id, name, age, grade):
"""添加新学生"""
students[student_id] = {"name": name, "age": age, "grade": grade}
print(f"学生 {name} 添加成功!")
def find_student(student_id):
"""查找学生信息"""
return students.get(student_id, "学生不存在")
def remove_student(student_id):
"""删除学生"""
if student_id in students:
name = students[student_id]["name"]
del students[student_id]
print(f"学生 {name} 已删除")
else:
print("学生不存在")
# 测试功能
add_student(104, "Diana", 20, "B+")
print(find_student(102))
remove_student(103)
项目扩展练习:
-
添加成绩更新功能
-
实现按姓名查找学生
-
添加数据持久化(保存到文件)
-
计算班级平均年龄和成绩分布
七、学习路线图与进阶建议
-
巩固基础:完成所有练习题
-
项目实践:尝试完善学生管理系统
-
下一步学习:
-
条件语句与循环结构
-
函数定义与模块化编程
-
文件操作与异常处理
-
-
学习资源推荐:
-
Python官方文档
-
Python基础教程相关书籍
-
在线编程练习平台(LeetCode、HackerRank)
-
"编程不是观赏运动,必须动手实践才能掌握。" - 在评论区分享你的代码和学习心得吧!
下期预告:我们将深入学习Python的条件控制和循环结构,这是实现程序逻辑的核心基础。敬请期待!
5万+

被折叠的 条评论
为什么被折叠?



