# 创建一个购物清单
= ["牛奶", "面包", "鸡蛋", "水果"]
shopping_list print("我的购物清单:", shopping_list)
# 创建一个成绩单
= [95, 88, 92, 87, 90]
scores print("小明的成绩:", scores)
我的购物清单: ['牛奶', '面包', '鸡蛋', '水果']
小明的成绩: [95, 88, 92, 87, 90]
想象一下,当我们去超市购物时,会把不同的商品放入购物车。Python中的列表就像这样一个”购物车”,可以存放多个数据。
列表是Python中最常用的数据结构,用方括号 []
来表示,数据之间用逗号 ,
分隔。
# 创建一个购物清单
= ["牛奶", "面包", "鸡蛋", "水果"]
shopping_list print("我的购物清单:", shopping_list)
# 创建一个成绩单
= [95, 88, 92, 87, 90]
scores print("小明的成绩:", scores)
我的购物清单: ['牛奶', '面包', '鸡蛋', '水果']
小明的成绩: [95, 88, 92, 87, 90]
💡 小贴士 列表就像一个容器,可以存放各种类型的数据,但最好在一个列表中存放相同类型的数据,这样更容易管理。
列表中的每个元素都有一个位置编号,我们称之为索引。需要注意的是,Python中的索引从0开始计数:
= ["小明", "小红", "小华", "小李", "小张"]
students
print("第一名同学是:", students[0]) # 输出:小明
print("最后一名同学是:", students[-1]) # 输出:小张
print("倒数第二名同学是:", students[-2]) # 输出:小李
第一名同学是: 小明
最后一名同学是: 小张
倒数第二名同学是: 小李
如果想一次性取出多个元素,可以使用切片操作。语法是 列表[开始:结束]
:
# 创建一个一周的日程表
= ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
weekly_schedule
# 取出工作日
= weekly_schedule[0:5] # 或者简写为 weekly_schedule[:5]
workdays print("工作日:", workdays)
# 取出周末
= weekly_schedule[5:7] # 或者简写为 weekly_schedule[5:]
weekend print("周末:", weekend)
# 反转整个列表
= weekly_schedule[::-1]
reversed_week print("反转后的日程表:", reversed_week)
工作日: ['周一', '周二', '周三', '周四', '周五']
周末: ['周六', '周日']
反转后的日程表: ['周日', '周六', '周五', '周四', '周三', '周二', '周一']
🌟 要点总结
- 列表用
[]
创建,元素用逗号分隔- 索引从0开始计数
- 可以用负数索引从后往前数
- 切片可以取出多个元素
- 列表可以存储任何类型的数据
- 使用
len()
获取列表长度- 使用
in
检查元素是否存在
就像整理书包一样,我们经常需要对列表进行添加、删除、修改等操作。让我们来学习这些基本操作!
想象你在整理课程表,有时候需要更换某一节课:
# 创建一个课程表
= ["语文", "数学", "英语", "物理", "化学"]
schedule print("原始课程表:", schedule)
# 把第一节课改成"体育"
0] = "体育"
schedule[print("修改后的课程表:", schedule)
# 一次性修改多节课
1:3] = ["音乐", "美术"] # 把第2-3节课改成音乐和美术
schedule[print("批量修改后的课程表:", schedule)
原始课程表: ['语文', '数学', '英语', '物理', '化学']
修改后的课程表: ['体育', '数学', '英语', '物理', '化学']
批量修改后的课程表: ['体育', '音乐', '美术', '物理', '化学']
有三种常用的添加元素的方法:
# 创建一个待办事项列表
= ["做作业", "看书"]
todos print("原始待办事项:", todos)
# 在末尾添加一项
"打篮球")
todos.append(print("添加一项后:", todos)
# 在指定位置插入一项
1, "吃午饭") # 在第二个位置插入
todos.insert(print("插入一项后:", todos)
# 一次性添加多项
= ["听音乐", "洗衣服"]
more_todos
todos.extend(more_todos)print("添加多项后:", todos)
原始待办事项: ['做作业', '看书']
添加一项后: ['做作业', '看书', '打篮球']
插入一项后: ['做作业', '吃午饭', '看书', '打篮球']
添加多项后: ['做作业', '吃午饭', '看书', '打篮球', '听音乐', '洗衣服']
有三种常用的删除方法:
# 创建一个购物清单
= ["苹果", "香蕉", "橙子", "西瓜", "葡萄", "草莓"]
shopping print("原始购物清单:", shopping)
# 删除指定商品
"西瓜") # 删除西瓜
shopping.remove(print("删除西瓜后:", shopping)
# 删除最后一个商品并显示它
= shopping.pop() # 不指定位置默认删除最后一个
last_item print("删除的商品是:", last_item)
print("删除后的清单:", shopping)
# 删除多个商品
del shopping[1:3] # 删除第2个到第3个商品
print("批量删除后:", shopping)
原始购物清单: ['苹果', '香蕉', '橙子', '西瓜', '葡萄', '草莓']
删除西瓜后: ['苹果', '香蕉', '橙子', '葡萄', '草莓']
删除的商品是: 草莓
删除后的清单: ['苹果', '香蕉', '橙子', '葡萄']
批量删除后: ['苹果', '葡萄']
就像整理扑克牌一样,我们可以对列表进行排序:
# 创建一个成绩单
= [85, 92, 78, 95, 88]
scores print("原始成绩:", scores)
# 升序排序(从小到大)
scores.sort()print("升序排序后:", scores)
# 降序排序(从大到小)
=True)
scores.sort(reverseprint("降序排序后:", scores)
# 对名字进行排序
= ["小明", "小红", "小华", "小李"]
names
names.sort()print("按字母顺序排序:", names)
原始成绩: [85, 92, 78, 95, 88]
升序排序后: [78, 85, 88, 92, 95]
降序排序后: [95, 92, 88, 85, 78]
按字母顺序排序: ['小华', '小明', '小李', '小红']
当列表中都是数字时,我们可以进行一些数学运算:
= [85, 92, 78, 95, 88, 90, 87, 91, 83, 89]
scores
# 计算平均分
= sum(scores) / len(scores)
average # 找出最高分和最低分
= max(scores)
highest = min(scores)
lowest
print(f"班级成绩分析:")
print(f"- 平均分:{average:.1f}")
print(f"- 最高分:{highest}")
print(f"- 最低分:{lowest}")
print(f"- 参加考试人数:{len(scores)}")
班级成绩分析:
- 平均分:87.8
- 最高分:95
- 最低分:78
- 参加考试人数:10
= ["苹果", "香蕉", "橙子"]
fruits if "苹果" in fruits:
print("有苹果可以吃!")
有苹果可以吃!
= [1, 2, 3, 2, 4, 2, 5]
numbers = numbers.count(2) # 统计2出现的次数
count_2 print(f"数字2出现了{count_2}次")
数字2出现了3次
= ["小明", "小红", "小华"]
students = students.index("小红") # 找出"小红"的位置
position print(f"小红在第{position + 1}个位置")
小红在第2个位置
🌟 要点总结
- 修改元素:直接赋值或切片赋值
- 添加元素:append()、insert()、extend()
- 删除元素:remove()、pop()、del
- 排序:sort() 可以升序或降序
- 数学运算:sum()求和、len()计数、max()/min()找最值
- 多使用 in 来检查元素是否存在
- count() 可以统计元素出现次数
想象你在参加考试,考卷上的题目和答案是不能更改的。元组就像这样,一旦创建就不能修改的数据集合。
元组和列表很像,但有一个重要区别:
[]
创建,可以随意修改()
创建,创建后不能修改# 创建一个表示RGB颜色的元组
= (255, 0, 0) # 红色
red = (0, 255, 0) # 绿色
green = (0, 0, 255) # 蓝色
blue
print("红色的RGB值:", red)
print("绿色的RGB值:", green)
print("蓝色的RGB值:", blue)
# 尝试修改元组会导致错误
try:
0] = 100 # 这会产生错误
red[except TypeError as e:
print("\n不能修改元组!错误信息:", e)
红色的RGB值: (255, 0, 0)
绿色的RGB值: (0, 255, 0)
蓝色的RGB值: (0, 0, 255)
不能修改元组!错误信息: 'tuple' object does not support item assignment
表示固定的数据组合:
# 表示一个学生的基本信息(学号,姓名,年龄)
= (1001, "小明", 16)
student print(f"学号:{student[0]}")
print(f"姓名:{student[1]}")
print(f"年龄:{student[2]}")
# 表示地理坐标(经度,纬度)
= (116.407396, 39.904200)
beijing print(f"\n北京的坐标是:经度 {beijing[0]},纬度 {beijing[1]}")
学号:1001
姓名:小明
年龄:16
北京的坐标是:经度 116.407396,纬度 39.9042
虽然不能修改元组的内容,但我们可以:
# 创建一个考试成绩元组
= (85, 92, 78, 95, 88)
scores
# 1. 获取长度
print(f"考试科目数:{len(scores)}")
# 2. 查找最大和最小值
print(f"最高分:{max(scores)}")
print(f"最低分:{min(scores)}")
# 3. 计算平均值
print(f"平均分:{sum(scores) / len(scores):.1f}")
# 4. 检查元素是否存在
print(f"是否有满分:{100 in scores}")
# 5. 元组切片
print(f"前三科成绩:{scores[:3]}")
考试科目数:5
最高分:95
最低分:78
平均分:87.6
是否有满分:False
前三科成绩:(85, 92, 78)
🌟 要点总结
- 元组用
()
创建,列表用[]
创建- 元组创建后不能修改(不可变)
- 元组常用于表示固定的数据组合
- 可以使用索引和切片访问元组元素
- 元组比列表更安全,性能更好
- 使用解包可以方便地获取元组中的值