Module 02 · Python Data StructuresPython 数据结构
Lists and TuplesPython 列表与元组
在本视频中,我们将讨论 列表 (Lists) 和 元组 (Tuples)。这两者属于复合数据类型,是 Python 中常见的数据结构之一。
元组 (Tuples)
元组简介
元组是一种有序序列,通常表示为用逗号分隔的元素,并用圆括号括起来。元组内的元素可以是不同的数据类型,如字符串、整数、浮点数等。
ratings = (4, 3.5, 5, 4.5, 3)
元组的 类型 是 tuple,尽管其中的元素可以是不同的数据类型。
访问元组中的元素
元组中的每个元素都可以通过 索引 来访问。
| 索引 | 元素 |
|---|---|
| 0 | 4 |
| 1 | 3.5 |
| 2 | 5 |
| 3 | 4.5 |
| 4 | 3 |
- 访问第一个元素:
ratings[0] # 输出: 4 - 访问第二个元素:
ratings[1] # 输出: 3.5 - 访问最后一个元素:
ratings[-1] # 输出: 3
元组的拼接和切片
- 拼接:我们可以通过加号 (
+) 将元组连接起来:tuple1 = (1, 2) tuple2 = (3, 4) combined_tuple = tuple1 + tuple2 # 输出: (1, 2, 3, 4) - 切片:切片操作允许我们提取元组的一部分。
- 获取前3个元素:
ratings[:3] # 输出: (4, 3.5, 5) - 获取最后两个元素:
ratings[-2:] # 输出: (4.5, 3)
- 获取前3个元素:
元组的长度
我们可以使用 len() 函数获取元组的长度:
len(ratings) # 输出: 5
元组的不可变性
元组是不可变的,这意味着一旦创建,元组的元素不能修改。
不可变性示例
ratings1 = ratings
ratings1[0] = 5 # 会引发错误,因为元组不可变
- 为什么不可变性重要:变量
ratings1和ratings都引用相同的元组对象,因此修改其中一个变量并不会影响另一个。
元组的嵌套
元组可以包含其他元组,甚至是更复杂的数据类型,形成嵌套结构。我们可以通过索引访问嵌套元组的元素。
- 嵌套元组示例:
nested_tuple = ((1, 2), (3, 4)) nested_tuple[0][1] # 输出: 2
列表 (Lists)
列表简介
列表与元组类似,也是有序序列,但它们是可变的(mutable),意味着可以在创建后修改它们。列表表示为方括号括起来的元素。
L = [1, 2, 3, "hello", 4.5]
与元组类似,列表也可以包含不同的数据类型,并且支持嵌套。
访问列表中的元素
| 索引 | 元素 |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | "hello" |
| 4 | 4.5 |
- 访问第一个元素:
L[0] # 输出: 1 - 访问最后一个元素:
L[-1] # 输出: 4.5
列表的拼接和切片
- 拼接:我们可以通过加号 (
+) 将两个列表连接起来:list1 = [1, 2] list2 = [3, 4] combined_list = list1 + list2 # 输出: [1, 2, 3, 4] - 切片:切片操作允许我们提取列表的一部分。
- 获取前3个元素:
L[:3] # 输出: [1, 2, 3] - 获取最后两个元素:
L[-2:] # 输出: ['hello', 4.5]
- 获取前3个元素:
列表的可变性
列表是可变的,这意味着我们可以修改它们的元素。我们可以直接通过索引赋值来改变列表的内容。
- 修改列表元素:
L[0] = "Changed" # 输出: ['Changed', 2, 3, 'hello', 4.5]
列表的方法
- 扩展 (extend):使用
extend()方法将一个列表添加到另一个列表的末尾。L.extend([5, 6]) # 输出: ['Changed', 2, 3, 'hello', 4.5, 5, 6] - 追加 (append):使用
append()方法向列表末尾添加一个元素。L.append("New Element") # 输出: ['Changed', 2, 3, 'hello', 4.5, 5, 6, 'New Element']
删除元素
- 使用
del命令删除指定索引的元素:del L[0] # 输出: [2, 3, 'hello', 4.5, 5, 6, 'New Element'] - 删除指定值的元素:
L.remove(3) # 输出: [2, 'hello', 4.5, 5, 6, 'New Element']
字符串转换为列表
我们可以使用 split() 方法将字符串分割成列表:
my_string = "apple,banana,orange"
my_list = my_string.split(",")
# 输出: ['apple', 'banana', 'orange']
列表的别名和克隆
- 别名 (Aliasing):多个变量引用同一个列表对象。如果修改一个变量,另一个也会受到影响。
a = [1, 2, 3] b = a a[0] = 99 print(b) # 输出: [99, 2, 3] - 克隆 (Cloning):使用
copy()方法克隆列表,这样修改原列表时,克隆的列表不会受到影响。a = [1, 2, 3] b = a.copy() a[0] = 99 print(b) # 输出: [1, 2, 3]
总结
在本视频中,我们学习了:
- 元组:有序的不可变序列,支持索引、切片和嵌套,但不能修改其内容。
- 列表:有序的可变序列,支持索引、切片、嵌套以及修改其内容。
- 常用操作:拼接、扩展、删除元素等。
- 别名与克隆:多个变量可以引用同一个列表,使用
copy()方法克隆列表以避免影响。
更多关于列表、元组和其他 Python 对象的信息,请查看实验室中的示例。