列表(List)

学习Python列表的创建、访问、修改和常用操作,掌握这个最灵活的数据容器。

基本概念

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

列表的特点:

  • 有序:元素按照插入顺序排序,可以通过索引访问
  • 可变:可以添加、删除和修改元素
  • 异构:可以存储不同类型的数据
  • 可重复:可以包含重复的元素

列表的表示:用方括号 [] 包围元素,元素之间用逗号分隔。

# 创建一个空列表
empty_list = []

# 创建一个包含整数的列表
numbers = [1, 2, 3, 4, 5]

# 创建一个包含不同类型元素的列表
mixed_list = [1, "hello", 3.14, True]

访问列表元素

可以使用索引来访问列表中的元素。Python的索引从0开始,也支持负数索引(从末尾开始计数)。

# 创建一个列表
fruits = ["apple", "banana", "orange", "grape", "mango"]

# 访问第一个元素(索引为0)
print(fruits[0]) # 输出: apple

# 访问第三个元素
print(fruits[2]) # 输出: orange

# 使用负数索引访问最后一个元素
print(fruits[-1]) # 输出: mango

# 使用负数索引访问倒数第三个元素
print(fruits[-3]) # 输出: orange

还可以使用切片操作来访问列表的一部分:

# 创建一个列表
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 访问索引1到3的元素(不包含索引4)
print(numbers[1:4]) # 输出: [1, 2, 3]

# 访问从索引2开始到末尾的所有元素
print(numbers[2:]) # 输出: [2, 3, 4, 5, 6, 7, 8, 9]

# 访问从开头到索引5的元素(不包含索引5)
print(numbers[:5]) # 输出: [0, 1, 2, 3, 4]

# 访问所有元素
print(numbers[:]) # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 使用步长为2访问元素
print(numbers[1:8:2]) # 输出: [1, 3, 5, 7]

修改列表元素

列表是可变的,可以修改、添加和删除元素。

修改元素:

# 创建一个列表
fruits = ["apple", "banana", "orange", "grape"]

# 修改第二个元素
fruits[1] = "pear"
print(fruits) # 输出: ['apple', 'pear', 'orange', 'grape']

# 使用切片修改多个元素
fruits[2:] = ["watermelon", "strawberry"]
print(fruits) # 输出: ['apple', 'pear', 'watermelon', 'strawberry']

添加元素:

# 创建一个列表
numbers = [1, 2, 3]

# 在末尾添加一个元素
numbers.append(4)
print(numbers) # 输出: [1, 2, 3, 4]

# 在指定位置插入一个元素
numbers.insert(1, 1.5)
print(numbers) # 输出: [1, 1.5, 2, 3, 4]

# 合并另一个列表
numbers.extend([5, 6])
print(numbers) # 输出: [1, 1.5, 2, 3, 4, 5, 6]

删除元素:

# 创建一个列表
fruits = ["apple", "banana", "orange", "grape", "mango"]

# 根据索引删除元素
del fruits[1]
print(fruits) # 输出: ['apple', 'orange', 'grape', 'mango']

# 删除指定值的元素
fruits.remove("orange")
print(fruits) # 输出: ['apple', 'grape', 'mango']

# 弹出并返回最后一个元素
last_fruit = fruits.pop()
print(last_fruit) # 输出: mango
print(fruits) # 输出: ['apple', 'grape']

# 弹出并返回指定索引的元素
first_fruit = fruits.pop(0)
print(first_fruit) # 输出: apple
print(fruits) # 输出: ['grape']

# 清空列表
fruits.clear()
print(fruits) # 输出: []

列表常用方法

Python列表提供了许多有用的方法,可以方便地操作列表。

append()

向列表末尾添加一个元素

extend()

将另一个列表的所有元素添加到当前列表末尾

insert()

在指定位置插入一个元素

remove()

删除指定值的第一个出现的元素

pop()

删除并返回指定索引的元素(默认为最后一个)

clear()

删除列表中的所有元素

index()

返回指定值的第一个出现的索引

count()

返回指定值在列表中出现的次数

sort()

对列表进行排序(原地修改)

reverse()

反转列表中的元素顺序(原地修改)

copy()

创建列表的浅拷贝

示例:使用sort()和reverse()方法

# 创建一个列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6]

# 排序(从小到大)
numbers.sort()
print(numbers) # 输出: [1, 1, 2, 3, 4, 5, 6, 9]

# 排序(从大到小)
numbers.sort(reverse=True)
print(numbers) # 输出: [9, 6, 5, 4, 3, 2, 1, 1]

# 反转列表
numbers.reverse()
print(numbers) # 输出: [1, 1, 2, 3, 4, 5, 6, 9]

故事化案例:小明的购物清单

小明要去超市购物,他需要创建一个购物清单,记录他需要购买的物品。让我们用Python列表来帮助他管理购物清单。

场景:小明的购物清单

  • 创建购物清单
  • 添加新物品
  • 删除已购买的物品
  • 检查物品是否在清单中
  • 计算需要购买的物品数量

代码实现:

# 创建购物清单
shopping_list = ["苹果", "香蕉", "牛奶", "面包", "鸡蛋"]

print("初始购物清单:", shopping_list)

# 添加新物品
shopping_list.append("大米")
shopping_list.append("蔬菜")
print("添加物品后的清单:", shopping_list)

# 在指定位置插入物品
shopping_list.insert(2, "橙子")
print("插入物品后的清单:", shopping_list)

# 检查物品是否在清单中
if "牛奶" in shopping_list:
    print("需要购买牛奶")

# 计算需要购买的物品数量
item_count = len(shopping_list)
print(f"购物清单中共有{item_count}件物品")

# 删除已购买的物品
shopping_list.remove("香蕉")
print("购买香蕉后的清单:", shopping_list)

# 清空购物清单(表示所有物品都已购买)
shopping_list.clear()
print("购物完成后的清单:", shopping_list)

运行上面的代码,输出结果为:
初始购物清单:['苹果', '香蕉', '牛奶', '面包', '鸡蛋']
添加物品后的清单:['苹果', '香蕉', '牛奶', '面包', '鸡蛋', '大米', '蔬菜']
插入物品后的清单:['苹果', '香蕉', '橙子', '牛奶', '面包', '鸡蛋', '大米', '蔬菜']
需要购买牛奶
购物清单中共有8件物品
购买香蕉后的清单:['苹果', '橙子', '牛奶', '面包', '鸡蛋', '大米', '蔬菜']
购物完成后的清单:[]

练习题

1 列表操作练习

1. 创建一个包含10个整数的列表 2. 计算列表中所有元素的和与平均值 3. 找出列表中的最大值和最小值 4. 将列表元素反转 5. 删除列表中所有的偶数

2 字符串列表处理

1. 创建一个包含5个字符串的列表 2. 将所有字符串转换为大写 3. 按字符串长度排序 4. 找出包含特定字符的字符串

3 嵌套列表处理

1. 创建一个嵌套列表,表示一个3x3的矩阵 2. 计算矩阵所有元素的和 3. 找出矩阵中的最大值 4. 将矩阵转置(行变列,列变行)