【Python基础:语法第四课】列表和元组——Python 里的“爱情”:列表善变,元组长情

【Python基础:语法第四课】列表和元组——Python 里的“爱情”:列表善变,元组长情

大家好!欢迎来到 Python 基础语法第四课。今天我们聊一个超级有趣又实用的主题:列表(List)元组(Tuple)。为了让小白也能轻松记住,我用一个浪漫的比喻来讲解——

列表就像谈恋爱时善变的女朋友:想加点新爱好、删掉旧习惯、随时修改计划,都可以!
元组就像结婚后长情的伴侣:一旦确定下来,就一辈子不变,安全可靠,值得信赖!

这个比喻能帮你瞬间记住它们的本质区别:列表可变,元组不可变。下面我们一步步深入,吃透它们的所有用法!

1. 列表(List)——善变的“女朋友”

定义:用方括号 [] 包裹,用逗号分隔元素。

# 创建列表
girlfriend_hobbies = ["购物", "追剧", "旅游", "美食"]
scores = [88, 92, 85, 99, 76]
mixed = ["Alice", 25, True, 3.14]  # 可以混放各种类型!
empty_list = []

核心特点:可变(能增、删、改)

操作代码示例解释
修改元素girlfriend_hobbies[1] = “刷短视频”把第2个爱好改了
添加元素girlfriend_hobbies.append(“健身”)加一个新爱好到末尾
插入元素girlfriend_hobbies.insert(0, “睡觉”)在开头插入
删除元素girlfriend_hobbies.remove(“购物”)删除指定值(第一个匹配的)
弹出元素popped = girlfriend_hobbies.pop()删除并返回最后一个(默认)
按索引删除del girlfriend_hobbies[2]删除指定位置
清空列表girlfriend_hobbies.clear()变回空列表 []

切片操作(超级强大!)

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[2:6])    # [2, 3, 4, 5]       从索引2到5
print(numbers[:5])     # [0, 1, 2, 3, 4]    前5个
print(numbers[5:])     # [5, 6, 7, 8, 9]    从第5个到最后
print(numbers[::2])    # [0, 2, 4, 6, 8]    每隔一个取
print(numbers[::-1])   # [9, 8, 7, ..., 0]  反转列表!太好用了

列表推导式(优雅又高效)

# 普通写法要好几行
squares = []
for x in range(10):
    squares.append(x**2)

# 列表推导式一行搞定!
squares = [x**2 for x in range(10)]                    # [0, 1, 4, 9, ..., 81]
evens = [x for x in range(20) if x % 2 == 0]           # 所有偶数
names = ["alice", "BOB", "Charlie"]
upper_names = [name.capitalize() for name in names]   # ["Alice", "Bob", "Charlie"]

2. 元组(Tuple)——长情的“伴侣”

定义:用圆括号 () 包裹,逗号分隔。

# 创建元组
boyfriend = ("老实", "靠谱", "专一", "会做饭")
coordinates = (116.397428, 39.90923)  # 北京坐标
single = (520,)          # 只有一个元素时,必须加逗号!
empty_tuple = ()

核心特点:不可变(创建后不能修改)

  • 不能增、删、改元素 → 试图修改会报错 TypeError: 'tuple' object does not support item assignment
  • 但如果元组里包含列表等可变对象,那个对象本身还是可以改的(小心!)

为什么用元组?

  • 更安全:数据不会被意外修改
  • 更快:访问速度比列表略快,内存占用更少
  • 可以作为字典的 key(列表不行!)
  • 函数返回多个值时,实际上返回的就是元组

元组最优雅的用法:解包(Unpacking)

# 普通赋值
x = coordinates[0]
y = coordinates[1]

# 元组解包(超级好用!)
x, y = coordinates        # x=116.397428, y=39.90923

# 交换变量(Python 独有神技)
a = 1
b = 2
a, b = b, a                # 交换完成!不用临时变量

# 函数返回多个值
def get_person_info():
    return "王小明", 28, "程序员", "北京"

name, age, job, city = get_person_info()
print(f"{name} 是 {job},今年 {age} 岁,住在 {city}")

# 忽略某些值用 _
name, _, job, _ = get_person_info()

3. 列表 vs 元组 对比表(一图记住)

特性列表 [](善变)元组 ()(长情)
可变性可变(增删改)不可变(只读)
定义符号方括号 []圆括号 ()
单元素写法[520](520,) 必须加逗号!
性能稍慢(支持修改)更快、更省内存
是否可做 dict key不可以可以!
典型场景需要频繁修改的数据固定不变的数据、坐标、配置
支持推导式支持支持(但常用生成器表达式)

4. 实战小案例:用列表和元组管理学生信息

# 用列表存储所有学生(可以增删学生)
students = []

# 每个学生用元组存储(信息确定后不再改)
students.append(("张三", 18, "男", 95.5))
students.append(("李四", 19, "女", 88.0))
students.append(("王五", 17, "男", 92.5))

# 计算平均分
scores = [student[3] for student in students]  # 列表推导取出所有分数
average = sum(scores) / len(scores)
print(f"班级平均分:{average:.2f}")

# 找出最高分学生
top_student = max(students, key=lambda s: s[3])
name, age, gender, score = top_student  # 元组解包
print(f"最高分:{name} ({score}分)")

5. 总结与记忆口诀

口诀

  • 列表方括号,爱改爱折腾;元组圆括号,长情不动情。
  • 要变用列表,不变用元组;函数多返回值,解包真好用!

掌握了列表和元组,你就拥有了 Python 中处理序列数据的两大神器。它们几乎出现在所有程序里:配置文件用元组、动态数据用列表、函数返回用元组解包……

下一课我们将继续聊 字典和集合——Python 的“社交达人”和“黑名单”系统,敬请期待!

动手练习建议:

  1. 用列表实现一个简单的待办事项(Todo List)管理程序。
  2. 用元组存储几个城市的经纬度,然后计算两个城市之间的简单距离。

加油!Python 的世界越来越精彩了!❤️

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部