首页
学习
活动
专区
圈层
工具
发布

Python列表从基础到高阶实战

一、列表是什么?

列表(List)是Python中最基本、最常用的数据结构之一,它可以存储一系列有序的元素。想象一下购物清单、待办事项或者学生名单,这些都是列表在现实生活中的体现。

列表的特点

有序集合(元素有明确的位置)

可变(可以修改内容)

可以包含任意类型的元素

用方括号[]表示

# 创建一个简单的列表

shopping_list = ['苹果', '牛奶', '面包', '鸡蛋']

列表意图:

二、列表创建与基本操作

1. 创建列表

# 空列表

empty_list = []

# 包含不同类型元素的列表

mixed_list = [1, "Python", 3.14, True]

# 使用list()构造函数

numbers = list(range(5))  # [0, 1, 2, 3, 4]

2. 访问列表元素

fruits = ['apple', 'banana', 'cherry']

# 通过索引访问

first_fruit = fruits[0]  # 'apple'

# 负索引表示从末尾开始

last_fruit = fruits[-1]  # 'cherry'

# 切片操作

some_fruits = fruits[1:3]  # ['banana', 'cherry']

表1:列表索引示例表

3. 修改列表

# 修改单个元素

fruits[1] = 'blueberry'

# 修改切片

fruits[0:2] = ['apricot', 'blackberry']

三、列表常用方法详解

1. 添加元素

todo_list = ['写文章', '买菜']

# append() - 在末尾添加单个元素

todo_list.append('打电话')

# extend() - 添加多个元素

todo_list.extend(['洗衣服', '做饭'])

# insert() - 在指定位置插入

todo_list.insert(1, '取快递')

2. 删除元素

# remove() - 按值删除

todo_list.remove('买菜')

# pop() - 按索引删除并返回被删元素

done_task = todo_list.pop(0)

# del语句

del todo_list[1:3]

# clear() - 清空列表

todo_list.clear()

3. 查找与统计

grades = [85, 90, 78, 90, 92, 85]

# index() - 查找元素首次出现的位置

first_90 = grades.index(90)  # 1

# count() - 统计元素出现次数

count_85 = grades.count(85)  # 2

# in操作符 - 检查元素是否存在

has_100 = 100 in grades  # False

4. 排序与反转

# sort() - 原地排序

grades.sort()  # 默认升序

grades.sort(reverse=True)  # 降序

# sorted() - 返回新排序列表

sorted_grades = sorted(grades)

# reverse() - 反转列表

grades.reverse()

四、列表高级操作

1. 列表推导式

# 创建平方数列表

squares = [x**2 for x in range(10)]

# 带条件的列表推导式

even_squares = [x**2 for x in range(10) if x % 2 == 0]

列表推导式执行流程:

2. 嵌套列表

# 创建二维列表(矩阵)

matrix = [

  [1, 2, 3],

  [4, 5, 6],

  [7, 8, 9]

]

# 访问嵌套元素

element = matrix[1][2]  # 6

# 使用嵌套推导式转置矩阵

transposed = [[row[i] for row in matrix] for i in range(3)]

3. 列表复制

original = [1, 2, 3]

# 浅拷贝

copy1 = original.copy()

copy2 = original[:]

# 深拷贝(对于嵌套列表)

import copy

deep_copy = copy.deepcopy(original)

五、列表性能与最佳实践

1. 时间复杂度分析

表2:列表操作时间复杂度表

2. 实用技巧

# 合并列表

combined = [1, 2] + [3, 4]  # 创建新列表

combined.extend([5, 6])     # 原地扩展更高效

# 遍历列表同时获取索引

for index, value inenumerate(fruits):

print(f"索引 {index}: {value}")

# 同时遍历多个列表

names = ['Alice', 'Bob', 'Charlie']

scores = [85, 92, 78]

for name, score inzip(names, scores):

print(f"{name}: {score}")

3. 何时使用列表

适合场景:

需要有序集合

需要频繁修改内容

元素类型可能不同

不适合场景:

只需要存储唯一值(考虑集合)

需要快速成员测试(考虑集合或字典)

元素数量巨大且只需追加(考虑collections.deque)

六、实战案例

案例1:学生成绩管理系统

def manage_grades():

"""学生成绩管理系统"""

  students = []

  grades = []

whileTrue:

print("\n1. 添加学生成绩")

print("2. 查看所有成绩")

print("3. 计算平均分")

print("4. 找出最高分")

print("5. 退出")

      choice = input("请选择操作: ")

if choice == '1':

          name = input("学生姓名: ")

          score = float(input("成绩: "))

          students.append(name)

          grades.append(score)

print(f"{name}的成绩已添加!")

elif choice == '2':

print("\n所有学生成绩:")

for name, score inzip(students, grades):

print(f"{name}: {score}")

elif choice == '3':

if grades:

              avg = sum(grades) / len(grades)

print(f"平均分: {avg:.2f}")

else:

print("还没有成绩记录!")

elif choice == '4':

if grades:

              max_score = max(grades)

              index = grades.index(max_score)

print(f"最高分: {students[index]}, {max_score}")

else:

print("还没有成绩记录!")

elif choice == '5':

print("退出系统!")

break

else:

print("无效选择,请重试!")

# 运行系统

manage_grades()

案例2:待办事项应用

class TodoApp:

"""简单的待办事项应用"""

def__init__(self):

self.tasks = []

defadd_task(self, task):

"""添加新任务"""

self.tasks.append(task)

print(f"已添加任务: {task}")

defview_tasks(self):

"""查看所有任务"""

ifnotself.tasks:

print("当前没有任务!")

return

print("\n待办事项:")

for i, task inenumerate(self.tasks, 1):

print(f"{i}. {task}")

defcomplete_task(self, task_num):

"""完成任务"""

try:

          task = self.tasks.pop(task_num - 1)

print(f"已完成任务: {task}")

except IndexError:

print("无效的任务编号!")

defrun(self):

"""运行应用"""

print("欢迎使用待办事项应用!")

whileTrue:

print("\n1. 添加任务")

print("2. 查看任务")

print("3. 完成任务")

print("4. 退出")

          choice = input("请选择操作: ")

if choice == '1':

              task = input("输入任务内容: ")

self.add_task(task)

elif choice == '2':

self.view_tasks()

elif choice == '3':

self.view_tasks()

ifself.tasks:

                  task_num = int(input("输入要完成的任务编号: "))

self.complete_task(task_num)

elif choice == '4':

print("再见!")

break

else:

print("无效选择,请重试!")

# 运行应用

app = TodoApp()

app.run()

七、进阶主题

1. 使用内置模块增强列表功能

# 使用collections.deque实现高效队列

from collections import deque

queue = deque(['A', 'B', 'C'])

queue.append('D')  # 入队

item = queue.popleft()  # 出队

# 使用heapq实现优先队列

import heapq

nums = [3, 1, 4, 1, 5, 9, 2]

heapq.heapify(nums)  # 转换为堆

smallest = heapq.heappop(nums)  # 弹出最小值

2. 第三方库推荐

NumPy数组- 适合数值计算

import numpy as np

# 创建NumPy数组

arr = np.array([1, 2, 3, 4])

# 向量化操作

squares = arr ** 2  # [1, 4, 9, 16]

# 高效数学运算

mean = np.mean(arr)  # 2.5

Pandas Series- 适合数据处理

import pandas as pd

# 创建Series

s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])

# 强大的数据操作

filtered = s[s > 20]  # 筛选大于20的值

八、总结

Python列表是功能强大且灵活的数据结构,通过本文我们学习了:

关键点

列表是有序、可变的集合

合理选择操作方法以优化性能

列表推导式可以简洁地创建列表

对于特定场景,考虑使用更专业的数据结构

希望这篇教程能帮助你掌握Python列表,让你的代码更加高效和优雅!

更新日期:2025-05-03

交流讨论:欢迎在评论区留言!

重要提示:本文主要是记录自己的学习与实践过程,所提内容或者观点仅代表个人意见,只是我以为的,不代表完全正确,不喜请勿关注。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OWq9urprn7WhxEB1aFPMiEew0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券