跳转至

数据结构:列表与元组

在Python中,列表(List)和元组(Tuple)是两种常用的数据结构。它们都可以用来存储多个元素,但在某些方面有所不同。本章将详细介绍如何创建、访问、修改列表和元组,并展示它们的常用操作。

1. 列表(List)

1.1 创建列表

列表是一个有序的可变集合,可以包含不同类型的元素。列表用方括号 [] 表示,元素之间用逗号 , 分隔。

# 创建一个包含不同类型元素的列表
my_list = [1, "Hello", 3.14, True]
print(my_list)  # 输出: [1, 'Hello', 3.14, True]

1.2 访问列表元素

列表中的元素可以通过索引访问,索引从0开始。Python还支持负索引,表示从列表末尾开始计数。

# 访问列表中的元素
print(my_list[0])  # 输出: 1
print(my_list[-1])  # 输出: True

1.3 修改列表元素

列表是可变的,这意味着你可以修改列表中的元素。

# 修改列表中的元素
my_list[1] = "World"
print(my_list)  # 输出: [1, 'World', 3.14, True]

1.4 常用列表操作

1.4.1 添加元素

可以使用 append() 方法在列表末尾添加元素,或使用 insert() 方法在指定位置插入元素。

# 添加元素
my_list.append("New Element")
print(my_list)  # 输出: [1, 'World', 3.14, True, 'New Element']

# 在指定位置插入元素
my_list.insert(2, "Inserted Element")
print(my_list)  # 输出: [1, 'World', 'Inserted Element', 3.14, True, 'New Element']

1.4.2 删除元素

可以使用 remove() 方法删除指定元素,或使用 pop() 方法删除指定位置的元素。

# 删除指定元素
my_list.remove("World")
print(my_list)  # 输出: [1, 'Inserted Element', 3.14, True, 'New Element']

# 删除指定位置的元素
my_list.pop(2)
print(my_list)  # 输出: [1, 'Inserted Element', True, 'New Element']

1.4.3 列表切片

列表切片允许你获取列表的一个子集。

# 列表切片
sub_list = my_list[1:3]
print(sub_list)  # 输出: ['Inserted Element', True]

2. 元组(Tuple)

2.1 创建元组

元组是一个有序的不可变集合,可以包含不同类型的元素。元组用圆括号 () 表示,元素之间用逗号 , 分隔。

# 创建一个包含不同类型元素的元组
my_tuple = (1, "Hello", 3.14, True)
print(my_tuple)  # 输出: (1, 'Hello', 3.14, True)

2.2 访问元组元素

元组中的元素可以通过索引访问,索引从0开始。Python同样支持负索引。

# 访问元组中的元素
print(my_tuple[1])  # 输出: Hello
print(my_tuple[-1])  # 输出: True

2.3 元组的不可变性

元组是不可变的,这意味着你不能修改元组中的元素。尝试修改元组会引发错误。

# 尝试修改元组中的元素(会引发错误)
# my_tuple[1] = "World"  # 这行代码会引发 TypeError

2.4 常用元组操作

2.4.1 元组切片

元组切片允许你获取元组的一个子集。

# 元组切片
sub_tuple = my_tuple[1:3]
print(sub_tuple)  # 输出: ('Hello', 3.14)

2.4.2 元组解包

元组解包允许你将元组中的元素赋值给多个变量。

# 元组解包
a, b, c, d = my_tuple
print(a, b, c, d)  # 输出: 1 Hello 3.14 True

3. 列表与元组的比较

  • 可变性:列表是可变的,元组是不可变的。
  • 性能:由于元组不可变,它们在内存中的存储和访问速度通常比列表更快。
  • 使用场景:列表适合存储需要频繁修改的数据,元组适合存储不需要修改的数据。

4. 练习题

4.1 简单练习

  1. 创建一个包含5个元素的列表,并打印出第三个元素。
  2. 创建一个包含3个元素的元组,并尝试修改其中一个元素(观察会发生什么)。

4.2 中等练习

  1. 编写一个程序,将一个列表中的所有元素复制到另一个列表中,并确保两个列表是独立的(即修改一个列表不会影响另一个列表)。
  2. 编写一个程序,将两个元组合并成一个新的元组。

4.3 复杂练习

  1. 编写一个程序,接受用户输入的一系列数字,将它们存储在列表中,然后计算这些数字的平均值。
  2. 编写一个程序,接受用户输入的一系列单词,将它们存储在元组中,然后按字母顺序排序并打印出来。

5. 总结

  • 列表是有序的可变集合,适合存储需要频繁修改的数据。
  • 元组是有序的不可变集合,适合存储不需要修改的数据。
  • 列表和元组都支持索引、切片等操作,但列表还支持添加、删除、修改元素等操作。
  • 选择使用列表还是元组取决于你的具体需求,如果需要频繁修改数据,使用列表;如果数据不需要修改,使用元组。

通过本章的学习,你应该已经掌握了列表和元组的基本操作,并能够在实际编程中灵活运用它们。继续练习这些概念,以加深对它们的理解。