Coursera 笔记

Module 02 · Python Data StructuresPython 数据结构

Lists and TuplesPython 列表与元组

Coursera ↗

在本视频中,我们将讨论 列表 (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
    

元组的拼接和切片

  1. 拼接:我们可以通过加号 (+) 将元组连接起来:
    tuple1 = (1, 2)
    tuple2 = (3, 4)
    combined_tuple = tuple1 + tuple2
    # 输出: (1, 2, 3, 4)
    
  2. 切片:切片操作允许我们提取元组的一部分。
    • 获取前3个元素:
      ratings[:3]  # 输出: (4, 3.5, 5)
      
    • 获取最后两个元素:
      ratings[-2:]  # 输出: (4.5, 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
    

列表的拼接和切片

  1. 拼接:我们可以通过加号 (+) 将两个列表连接起来:
    list1 = [1, 2]
    list2 = [3, 4]
    combined_list = list1 + list2
    # 输出: [1, 2, 3, 4]
    
  2. 切片:切片操作允许我们提取列表的一部分。
    • 获取前3个元素:
      L[:3]  # 输出: [1, 2, 3]
      
    • 获取最后两个元素:
      L[-2:]  # 输出: ['hello', 4.5]
      

列表的可变性

列表是可变的,这意味着我们可以修改它们的元素。我们可以直接通过索引赋值来改变列表的内容。

  • 修改列表元素:
    L[0] = "Changed"
    # 输出: ['Changed', 2, 3, 'hello', 4.5]
    

列表的方法

  1. 扩展 (extend):使用 extend() 方法将一个列表添加到另一个列表的末尾。
    L.extend([5, 6])
    # 输出: ['Changed', 2, 3, 'hello', 4.5, 5, 6]
    
  2. 追加 (append):使用 append() 方法向列表末尾添加一个元素。
    L.append("New Element")
    # 输出: ['Changed', 2, 3, 'hello', 4.5, 5, 6, 'New Element']
    

删除元素

  1. 使用 del 命令删除指定索引的元素:
    del L[0]
    # 输出: [2, 3, 'hello', 4.5, 5, 6, 'New Element']
    
  2. 删除指定值的元素:
    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 对象的信息,请查看实验室中的示例。