当前位置:  首页>> 技术小册>> Python编程轻松进阶(三)

7.1.9 容器、序列、映射和集合类型

在Python的广阔世界中,数据结构是构建程序大厦的基石。理解并熟练运用不同类型的容器是提升编程能力的重要一步。Python提供了丰富的内置容器类型,其中最基本且常用的包括序列(如列表、元组)、映射(字典)和集合(集合与有序集合)。这些容器类型各有特色,适用于不同的场景,掌握它们将极大地丰富你的编程工具箱。

7.1.9.1 容器类型概述

容器是Python中用于存储多个项目(如数字、字符串或其他容器)的数据结构。容器类型的主要特点是它们可以包含多个元素,并且这些元素可以通过某种方式进行访问。Python中的容器类型主要分为三大类:序列、映射和集合。

  • 序列:序列是一种有序的数据集合,可以包含不同类型的元素。序列中的每个元素都有一个位置,可以通过索引(位置编号)进行访问。Python中的序列类型包括列表(list)、元组(tuple)、字符串(str)等。
  • 映射:映射是一种无序的键值对集合,每个键都映射到一个唯一的值。映射中的元素通过键来访问,而不是通过位置。Python中的映射类型主要是字典(dict)。
  • 集合:集合是一个无序的、不包含重复元素的数据集合。集合主要用于数学上的集合操作,如并集、交集、差集等。Python中的集合类型有集合(set)和有序集合(OrderedDict在Python 3.7+的字典可视为有序集合的替代品,或使用collections.OrderedDict)。

7.1.9.2 序列类型

列表(List)

列表是Python中最常用的序列类型,它是一个可变的容器,支持存储任意类型的数据项。列表的创建非常简单,使用方括号[]包围元素,元素之间用逗号,分隔。

  1. my_list = [1, 'a', 3.14, [1, 2, 3]]

列表支持多种操作,包括添加、删除、索引、切片等。

  • 添加元素:使用append()方法在列表末尾添加元素,使用insert(index, value)在指定位置插入元素。
  • 删除元素:使用remove(value)删除第一个匹配的元素,或使用pop([index])删除并返回指定位置的元素(默认为最后一个元素)。
  • 索引与切片:通过索引访问元素(如my_list[0]),通过切片访问子列表(如my_list[1:3])。
元组(Tuple)

元组与列表相似,但它是不可变的。一旦创建了元组,就不能更改其元素。元组使用圆括号()包围元素(虽然单个元素或空元组需要额外的逗号以区分)。

  1. my_tuple = (1, 'a', 3.14)

元组常用于存储不应该被改变的数据,如函数的返回值或记录多个值时的数据结构。

7.1.9.3 映射类型:字典(Dict)

字典是Python中唯一的映射类型,它以键值对的形式存储数据。字典的键必须是不可变类型(如字符串、数字或元组),而值可以是任意类型。

  1. my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

字典支持通过键来访问值,支持添加、删除键值对,以及检查键是否存在等操作。

  • 访问值:通过键访问值(如my_dict['name'])。
  • 添加/修改键值对:通过赋值操作添加或修改键值对(如my_dict['job'] = 'Engineer')。
  • 删除键值对:使用del语句或pop()方法删除键值对(如del my_dict['age']my_dict.pop('city'))。

7.1.9.4 集合类型

集合(Set)

集合是一个无序的、不包含重复元素的数据集合。它主要用于数学上的集合操作,如并集、交集、差集等。

  1. my_set = {1, 2, 3, 4}

集合支持多种操作,如并集(|)、交集(&)、差集(-)、对称差集(^)等。

有序集合(使用OrderedDict或Python 3.7+的字典)

虽然Python标准库中没有直接称为“有序集合”的类型,但从Python 3.7开始,字典的插入顺序被保留,因此可以作为有序集合的替代品。另外,collections.OrderedDict也提供了有序字典的功能,适用于需要保持元素插入顺序的场景。

  1. from collections import OrderedDict
  2. my_ordered_dict = OrderedDict()
  3. my_ordered_dict['a'] = 1
  4. my_ordered_dict['b'] = 2
  5. # 遍历将保持插入顺序
  6. for key, value in my_ordered_dict.items():
  7. print(key, value)

7.1.9.5 容器类型的选择与应用

在实际编程中,选择适当的容器类型对于提高代码效率、可读性和可维护性至关重要。以下是一些选择容器类型的指导原则:

  • 如果你需要存储一系列有序的元素,并且可能会频繁地添加、删除或修改元素,那么列表(List)是最佳选择。
  • 如果你需要存储一系列元素,但这些元素在创建后不应被修改,那么元组(Tuple)是更好的选择。
  • 如果你需要存储键值对,并且需要通过键快速访问值,那么字典(Dict)是不可或缺的。
  • 如果你需要执行数学上的集合操作,如并集、交集等,那么集合(Set)或有序集合(OrderedDict或Python 3.7+的字典)将是你的首选。

理解并熟练掌握这些容器类型,将使你能够编写出更加高效、灵活和易于维护的Python代码。在本书的后续章节中,我们将进一步探索这些容器类型的高级用法和最佳实践,帮助你更深入地理解Python的数据结构。