当前位置:首页>python>Python 列表完全指南:从入门到实战

Python 列表完全指南:从入门到实战

  • 2026-10-11 08:23:35
Python 列表完全指南:从入门到实战
【写在前面】可以参看我的视频进行学习,喜欢的话,关注,点赞,分享,需要笔记课件的同学,可以评论区留言。
“

适合人群:编程新手、想系统学习 Python 数据结构的读者
阅读时间:8 分钟


一、什么是列表(List)?

列表是 Python 中最常用的数据结构之一,它是一个有序、可变的元素集合。

你可以把列表想象成一个智能收纳盒:

  • 能装任何东西(数字、文字、甚至其他列表)
  • 里面的物品有固定顺序(第1个、第2个...)
  • 可以随时添加、删除或修改里面的内容
# 创建一个空列表
empty_list = []

# 创建一个包含多种类型数据的列表
my_list = [1, "hello", 3.14, True]

二、创建列表的 4 种方式

1. 直接创建(最常用)

fruits = ["苹果", "香蕉", "橙子"]
numbers = [10, 20, 30, 40, 50]

2. 使用 list() 函数

# 将字符串拆分成字符列表
chars = list("Python")    # ['P', 'y', 't', 'h', 'o', 'n']

# 将元组转为列表
tuple_data = (1, 2, 3)
list_data = list(tuple_data)   # [1, 2, 3]

3. 列表推导式(高效简洁)

# 生成 1-10 的平方数
squares = [x**2for x in range(1, 11)]
# 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 筛选偶数
evens = [x for x in range(10) if x % 2 == 0]
# 结果:[0, 2, 4, 6, 8]

4. 重复创建

zeros = [0] * 5# [0, 0, 0, 0, 0]
stars = ["★"] * 3# ['★', '★', '★']

三、列表的核心操作

📍 访问元素(索引)

colors = ["红", "橙", "黄", "绿", "蓝"]

# 正向索引(从0开始)
print(colors[0])     # 红
print(colors[2])     # 黄

# 反向索引(从-1开始,倒数)
print(colors[-1])    # 蓝
print(colors[-2])    # 绿

📍 切片(截取部分)

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

# 基本切片 [start:end](end不包含)
print(numbers[2:5])      # [2, 3, 4]

# 从头或到尾省略
print(numbers[:3])       # [0, 1, 2]   前3个
print(numbers[7:])       # [7, 8, 9]   第7个之后

# 带步长 [start:end:step]
print(numbers[::2])      # [0, 2, 4, 6, 8]  每隔一个取
print(numbers[::-1])     # [9, 8, 7, ..., 0]  反转列表!

📍 增删改查

操作
方法
示例
添加
单个元素
append()list.append("新元素")
添加
多个元素
extend()list.extend([4,5])
插入
到指定位置
insert()list.insert(1, "插入")
删除
指定值
remove()list.remove("香蕉")
删除
指定位置
pop()list.pop(2)
清空
列表
clear()list.clear()
todo = ["买菜", "做饭"]

# 添加任务
todo.append("洗碗")           # ['买菜', '做饭', '洗碗']
todo.insert(0, "起床")        # ['起床', '买菜', '做饭', '洗碗']

# 删除任务
todo.remove("做饭")           # ['起床', '买菜', '洗碗']
finished = todo.pop()         # finished='洗碗', todo=['起床', '买菜']

四、列表的实用方法

scores = [85, 92, 78, 92, 88]

# 统计与查找
print(len(scores))            # 5  (元素个数)
print(scores.count(92))       # 2  (92出现几次)
print(scores.index(78))       # 2  (78在哪个位置)

# 排序
scores.sort()                 # 升序 [78, 85, 88, 92, 92]
scores.sort(reverse=True)     # 降序 [92, 92, 88, 85, 78]

# 反转
scores.reverse()              # 原地反转

# 复制(避免引用问题)
new_scores = scores.copy()
“

⚠️ 重要提示:sort() 会修改原列表,若想保留原列表,用 sorted(scores)。


五、实战案例

案例 1:成绩统计系统

scores = [85, 92, 78, 96, 88, 74, 91]

# 计算平均分
average = sum(scores) / len(scores)
print(f"平均分:{average:.1f}")   # 平均分:86.3

# 找出最高分和最低分
print(f"最高分:{max(scores)}")   # 最高分:96
print(f"最低分:{min(scores)}")   # 最低分:74

# 筛选优秀成绩(≥90分)
excellent = [s for s in scores if s >= 90]
print(f"优秀人数:{len(excellent)}人")  # 优秀人数:3人

案例 2:购物车价格计算

cart = [
    {"name": "牛奶", "price": 12.5},
    {"name": "面包", "price": 8.0},
    {"name": "鸡蛋", "price": 15.8}
]

# 计算总价
total = sum(item["price"] for item in cart)
print(f"购物车总价:¥{total:.2f}")   # 购物车总价:¥36.30

# 找出最贵的商品
most_expensive = max(cart, key=lambda x: x["price"])
print(f"最贵的是:{most_expensive['name']}")  # 最贵的是:鸡蛋

案例 3:数据去重与合并

# 两个班级的学生名单
class_a = ["张三", "李四", "王五"]
class_b = ["李四", "赵六", "孙七"]

# 合并并去重
all_students = list(set(class_a + class_b))
print(all_students)   # ['张三', '孙七', '王五', '赵六', '李四']

# 找共同学生(交集)
common = [s for s in class_a if s in class_b]
print(f"两个班都有的学生:{common}")   # ['李四']

六、常见坑与避坑指南

❌ 坑 1:赋值 ≠ 复制

a = [1, 2, 3]
b = a          # 这是引用,不是复制!
b.append(4)
print(a)       # [1, 2, 3, 4]  ← a也被改了!

# ✅ 正确做法
b = a.copy()   # 或 b = a[:]

❌ 坑 2:循环中删除元素

# 错误示范:会跳过元素或报错
for item in my_list:
if item == "删除我":
        my_list.remove(item)

# ✅ 正确做法:倒序删除或构建新列表
for i in range(len(my_list) - 1, -1, -1):
if my_list[i] == "删除我":
        my_list.pop(i)

❌ 坑 3:索引越界

lst = [1, 2, 3]
print(lst[5])   # IndexError!

# ✅ 安全访问
index = 5
if index < len(lst):
    print(lst[index])
else:
    print("索引超出范围")

七、一张图记住列表操作

列表 = [元素0, 元素1, 元素2, ... 元素n-1]
         ↑      ↑              ↑
       lst[0]  lst[1]        lst[-1]

常用操作速查:
  增:append / extend / insert
  删:remove / pop / clear
  查:index / count / in
  排:sort / sorted / reverse
  切:[start:end:step]

八、今日练习

试着完成下面这个小挑战:

“

有一个列表 nums = [3, 1, 4, 1, 5, 9, 2, 6],请:

  1. 去掉重复数字
  2. 按从大到小排序
  3. 取出前 3 个数字
  4. 计算它们的乘积
点击查看答案
nums = [3, 1, 4, 1, 5, 9, 2, 6]

# 去重 → 排序 → 取前3
unique_sorted = sorted(set(nums), reverse=True)[:3]
print(unique_sorted)   # [9, 6, 5]

# 计算乘积
result = 1
for n in unique_sorted:
    result *= n
print(result)          # 270

总结

特性
说明
有序性
元素有固定顺序,可通过索引访问
可变性
创建后可以随意增删改
异构性
可同时存放不同类型数据
动态性
长度不固定,可自由伸缩

列表是 Python 编程的基石,掌握它,你就已经迈出了数据处理的第一步!


“

💡 下期预告:Python 字典(Dict)——用"键值对"管理你的数据


如果这篇文章对你有帮助,欢迎点赞、收藏、转发给更多朋友!在评论区留下你的问题,我会一一解答。


最新文章

随机文章