Appearance
第9章:列表与元组操作
9.1 列表(list,最常用容器)
列表是Python中最常用的数据容器之一,用于存储多个元素。列表是有序的、可变的,可以存储不同类型的数据。
列表创建
- 语法:使用方括号
[]创建列表 - 示例:python
# 创建空列表 empty_list = [] # 创建包含不同类型元素的列表 mixed_list = [1, 2, "Python", True, 3.14] # 使用list()函数创建列表 list_from_string = list("hello") # ['h', 'e', 'l', 'l', 'o'] list_from_tuple = list((1, 2, 3)) # [1, 2, 3]
列表访问
- 语法:通过索引访问列表元素,索引从0开始
- 示例:python
fruits = ["apple", "banana", "cherry"] print(fruits[0]) # 输出:apple print(fruits[1]) # 输出:banana print(fruits[2]) # 输出:cherry # 负数索引(从末尾开始) print(fruits[-1]) # 输出:cherry print(fruits[-2]) # 输出:banana
列表修改
- 语法:通过索引修改列表元素
- 示例:python
fruits = ["apple", "banana", "cherry"] fruits[0] = "orange" print(fruits) # 输出:['orange', 'banana', 'cherry']
列表增删
添加元素:
append():在列表末尾添加元素insert():在指定位置添加元素- 示例:python
fruits = ["apple", "banana"] fruits.append("cherry") # 添加到末尾 print(fruits) # 输出:['apple', 'banana', 'cherry'] fruits.insert(1, "orange") # 添加到指定位置 print(fruits) # 输出:['apple', 'orange', 'banana', 'cherry']
删除元素:
remove():删除指定值的元素pop():删除指定索引的元素(默认删除最后一个)del:删除指定索引的元素或整个列表- 示例:python
fruits = ["apple", "orange", "banana", "cherry"] fruits.remove("orange") # 删除指定值 print(fruits) # 输出:['apple', 'banana', 'cherry'] removed_fruit = fruits.pop(1) # 删除指定索引 print(removed_fruit) # 输出:banana print(fruits) # 输出:['apple', 'cherry'] del fruits[0] # 删除指定索引 print(fruits) # 输出:['cherry']
列表排序
sort():对列表进行升序排序reverse():反转列表元素顺序- 示例:python
numbers = [3, 1, 4, 1, 5, 9, 2, 6] numbers.sort() # 升序排序 print(numbers) # 输出:[1, 1, 2, 3, 4, 5, 6, 9] numbers.reverse() # 反转列表 print(numbers) # 输出:[9, 6, 5, 4, 3, 2, 1, 1]
列表切片
- 语法:
列表[起始索引:结束索引:步长] - 示例:python
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(numbers[2:5]) # 输出:[2, 3, 4] print(numbers[:5]) # 输出:[0, 1, 2, 3, 4] print(numbers[5:]) # 输出:[5, 6, 7, 8, 9] print(numbers[::2]) # 输出:[0, 2, 4, 6, 8] print(numbers[::-1]) # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
9.2 元组(tuple,不可修改容器)
元组是另一种重要的容器类型,与列表类似,但元组是不可修改的(immutable)。
元组创建
- 语法:使用圆括号
()创建元组 - 示例:python
# 创建空元组 empty_tuple = () # 创建包含元素的元组 simple_tuple = (1, 2, 3) mixed_tuple = (1, "Python", True, 3.14) # 单元素元组(注意逗号) single_element_tuple = (1,) # 不使用括号创建元组(元组打包) tuple_packing = 1, 2, 3
元组访问
- 语法:通过索引访问元组元素,与列表相同
- 示例:python
fruits = ("apple", "banana", "cherry") print(fruits[0]) # 输出:apple print(fruits[-1]) # 输出:cherry
元组特点
- 不可修改:元组创建后不能修改其元素
- 适合存储固定数据:如坐标、身份证号等不需要修改的数据
- 示例:python
fruits = ("apple", "banana", "cherry") # fruits[0] = "orange" # 错误:'tuple' object does not support item assignment
列表与元组的区别
| 特性 | 列表 | 元组 |
|---|---|---|
| 可修改性 | 可变 | 不可变 |
| 创建语法 | [] | () |
| 性能 | 相对较低 | 相对较高 |
| 适用场景 | 存储需要修改的数据 | 存储固定不变的数据 |
| 方法 | 丰富(append, insert, remove等) | 较少(count, index等) |
实操案例:学生列表管理
案例:学生列表管理
python
"""
学生列表管理
功能:添加、删除、修改学生信息
"""
# 初始化学生列表
students = [
{"name": "张三", "age": 18, "grade": "高一"},
{"name": "李四", "age": 17, "grade": "高二"},
{"name": "王五", "age": 19, "grade": "高三"}
]
# 打印学生列表
def print_students():
print("\n=== 学生列表 ===")
for i, student in enumerate(students):
print(f"{i+1}. 姓名: {student['name']}, 年龄: {student['age']}, 年级: {student['grade']}")
print("================\n")
# 添加学生
def add_student():
name = input("请输入学生姓名:")
age = int(input("请输入学生年龄:"))
grade = input("请输入学生年级:")
students.append({"name": name, "age": age, "grade": grade})
print("学生添加成功!")
# 删除学生
def remove_student():
index = int(input("请输入要删除的学生序号:")) - 1
if 0 <= index < len(students):
removed_student = students.pop(index)
print(f"删除成功!删除的学生:{removed_student['name']}")
else:
print("学生序号不存在!")
# 修改学生信息
def update_student():
index = int(input("请输入要修改的学生序号:")) - 1
if 0 <= index < len(students):
student = students[index]
print(f"当前学生信息:姓名: {student['name']}, 年龄: {student['age']}, 年级: {student['grade']}")
name = input("请输入新姓名(按回车保持不变):")
age = input("请输入新年龄(按回车保持不变):")
grade = input("请输入新年级(按回车保持不变):")
if name:
student['name'] = name
if age:
student['age'] = int(age)
if grade:
student['grade'] = grade
print("学生信息修改成功!")
else:
print("学生序号不存在!")
# 主菜单
def main():
while True:
print("\n学生管理系统")
print("1. 查看学生列表")
print("2. 添加学生")
print("3. 删除学生")
print("4. 修改学生信息")
print("5. 退出")
choice = input("请输入选择:")
if choice == "1":
print_students()
elif choice == "2":
add_student()
elif choice == "3":
remove_student()
elif choice == "4":
update_student()
elif choice == "5":
print("退出系统!")
break
else:
print("输入错误,请重新输入!")
if __name__ == "__main__":
main()运行结果
学生管理系统
1. 查看学生列表
2. 添加学生
3. 删除学生
4. 修改学生信息
5. 退出
请输入选择:1
=== 学生列表 ===
1. 姓名: 张三, 年龄: 18, 年级: 高一
2. 姓名: 李四, 年龄: 17, 年级: 高二
3. 姓名: 王五, 年龄: 19, 年级: 高三
================
学生管理系统
1. 查看学生列表
2. 添加学生
3. 删除学生
4. 修改学生信息
5. 退出
请输入选择:2
请输入学生姓名:赵六
请输入学生年龄:18
请输入学生年级:高一
学生添加成功!
学生管理系统
1. 查看学生列表
2. 添加学生
3. 删除学生
4. 修改学生信息
5. 退出
请输入选择:1
=== 学生列表 ===
1. 姓名: 张三, 年龄: 18, 年级: 高一
2. 姓名: 李四, 年龄: 17, 年级: 高二
3. 姓名: 王五, 年龄: 19, 年级: 高三
4. 姓名: 赵六, 年龄: 18, 年级: 高一
================实操案例:固定数据存储(用元组)
案例:固定数据存储
python
"""
固定数据存储
功能:使用元组存储固定不变的数据
"""
# 存储一周的星期几
weekdays = ("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日")
# 存储月份天数(非闰年)
month_days = (
31, # 1月
28, # 2月
31, # 3月
30, # 4月
31, # 5月
30, # 6月
31, # 7月
31, # 8月
30, # 9月
31, # 10月
30, # 11月
31 # 12月
)
# 存储RGB颜色值
colors = (
(255, 0, 0), # 红色
(0, 255, 0), # 绿色
(0, 0, 255), # 蓝色
(255, 255, 0), # 黄色
(255, 0, 255), # 洋红色
(0, 255, 255), # 青色
(255, 255, 255),# 白色
(0, 0, 0) # 黑色
)
# 打印数据
print("一周的星期几:")
for day in weekdays:
print(day, end=" ")
print()
print("\n各月份天数:")
for i, days in enumerate(month_days, 1):
print(f"{i}月: {days}天")
print("\nRGB颜色值:")
color_names = ["红色", "绿色", "蓝色", "黄色", "洋红色", "青色", "白色", "黑色"]
for name, rgb in zip(color_names, colors):
print(f"{name}: {rgb}")运行结果
一周的星期几:
星期一 星期二 星期三 星期四 星期五 星期六 星期日
各月份天数:
1月: 31天
2月: 28天
3月: 31天
4月: 30天
5月: 31天
6月: 30天
7月: 31天
8月: 31天
9月: 30天
10月: 31天
11月: 30天
12月: 31天
RGB颜色值:
红色: (255, 0, 0)
绿色: (0, 255, 0)
蓝色: (0, 0, 255)
黄色: (255, 255, 0)
洋红色: (255, 0, 255)
青色: (0, 255, 255)
白色: (255, 255, 255)
黑色: (0, 0, 0)新手易错点
列表索引越界:访问不存在的索引会导致错误
pythonfruits = ["apple", "banana"] print(fruits[5]) # 错误:list index out of range误修改元组元素:尝试修改元组元素会导致错误
pythonfruits = ("apple", "banana") fruits[0] = "orange" # 错误:'tuple' object does not support item assignment列表方法使用错误:混淆方法的使用方式
pythonfruits = ["apple", "banana"] # 错误:append方法不返回新列表 new_fruits = fruits.append("cherry") print(new_fruits) # 输出:None # 正确:append方法修改原列表 fruits.append("cherry") print(fruits) # 输出:['apple', 'banana', 'cherry']
通过本章的学习,你已经掌握了Python中列表和元组的基本操作。列表是可变的、功能丰富的容器,适合存储需要修改的数据;而元组是不可变的容器,适合存储固定不变的数据。在实际编程中,你会根据具体需求选择合适的容器类型。
