深度解析 List、Map、Set 和数组

发布时间:2023年12月20日


在Python编程中,对于不同的需求和场景,选择合适的数据结构至关重要。List、Map、Set 和数组是四种常见的数据结构,它们各自有着独特的特点和优势。本文将深入探讨这四种数据结构的优点、区别、适用场景,并对它们的执行效率进行详细分析。

🌰列表(List)

🫐列表的基本概念

列表是一种有序、可变的数据结构,可以容纳不同类型的元素。在Python中,列表是非常灵活和常用的数据结构。

# 示例:创建一个简单的列表
my_list = [1, 2, 'hello', [3, 4]]
print(my_list)  # 输出: [1, 2, 'hello', [3, 4]]

🫐列表的插入操作

在列表中插入元素可以使用 insert() 方法,该方法接受两个参数:要插入的位置(索引)和要插入的元素。

# 示例:插入元素到指定位置
my_list = [1, 2, 3, 4, 5]
my_list.insert(2, 'inserted')
print(my_list)
# 输出: [1, 2, 'inserted', 3, 4, 5]

上述示例中,元素 'inserted' 被插入到索引为 2 的位置。

🫐列表的删除操作

列表的删除操作可以使用多种方式,其中最常用的是 pop()remove() 方法。

🥑使用 pop() 方法删除指定索引处的元素
# 示例:使用 pop() 方法删除指定索引处的元素
my_list = [1, 2, 'inserted', 3, 4, 5]
removed_element = my_list.pop(2)
print(f"Removed element: {removed_element}")
print(my_list)
# 输出:
# Removed element: inserted
# [1, 2, 3, 4, 5]
🥑使用 remove() 方法删除指定值的元素
# 示例:使用 remove() 方法删除指定值的元素
my_list = [1, 2, 3, 4, 5]
my_list.remove(3)
print(my_list)
# 输出: [1, 2, 4, 5]

在上述示例中,通过 pop() 方法删除了索引为 2 处的元素,而使用 remove() 方法删除了值为 3 的元素。

🥑使用 del 语句删除指定索引处的元素或整个列表切片
# 示例:使用 del 语句删除指定索引处的元素
my_list = [1, 2, 3, 4, 5]
del my_list[2]
print(my_list)
# 输出: [1, 2, 4, 5]

# 示例:使用 del 语句删除整个列表切片
del my_list[1:3]
print(my_list)
# 输出: [1, 5]

del 语句还可以用于删除整个列表切片,如示例所示。

🫐列表的清空

要清空整个列表,可以使用 clear() 方法:

# 示例:清空整个列表
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)
# 输出: []

以上操作都是在原地修改列表,即不创建新的列表而是直接修改原有列表。

这些操作允许你在列表中进行灵活的插入和删除元素的操作,根据具体需求选择合适的方法。

🫐列表的优点

  • 灵活性: 列表可以容纳不同类型的元素,使其非常灵活。
  • 可变性: 列表的长度和元素可以随时改变,支持增、删、改操作。

🫐列表的适用场景

  • 存储一组有序的数据,如学生的成绩、待办事项列表等。
  • 需要支持随机访问和可变性的情况,例如数据的动态更新。

🫐列表的执行效率

  • 查询: 列表通过索引进行访问,因此查询操作是常数时间复杂度 O(1)。
  • 插入和删除: 在列表的末尾进行插入和删除操作是常数时间复杂度 O(1),而在中间或开头则是线性时间复杂度 O(n)。

🌰字典(Map)

🫐字典的基本概念

字典是一种键值对的无序集合,每个键关联一个值。在Python中,字典通常称为Map。

# 示例:创建一个简单的字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}
print(my_dict)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

🫐字典的插入操作

字典中插入键值对可以通过以下方式实现:

# 示例:插入键值对
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

# 使用新的键插入新的值
my_dict['gender'] = 'Female'

print(my_dict)
# 输出: {'name': 'Alice', 'age': 25, 'city': 'Wonderland', 'gender': 'Female'}

在上述示例中,通过将新的键 'gender' 与对应的值 'Female' 关联,成功地插入了新的键值对。

🫐字典的更新操作

如果键已经存在于字典中,插入操作将会更新对应的值:

# 示例:更新已存在的键值对
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

# 更新 'age' 的值
my_dict['age'] = 26

print(my_dict)
# 输出: {'name': 'Alice', 'age': 26, 'city': 'Wonderland'}

在上述示例中,通过将键 'age' 的值更新为 26,成功地更新了已存在的键值对。

🫐字典的删除操作

字典的删除操作可以通过 del 关键字或 pop() 方法实现:

🥑使用 del 关键字删除指定键值对
# 示例:使用 del 删除指定键值对
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

# 删除键值对 'age'
del my_dict['age']

print(my_dict)
# 输出: {'name': 'Alice', 'city': 'Wonderland'}
🥑使用 pop() 方法删除指定键值对并返回对应的值
# 示例:使用 pop 删除指定键值对并返回值
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

# 删除键值对 'age' 并返回对应的值
removed_value = my_dict.pop('age')

print(f"Removed value: {removed_value}")
print(my_dict)
# 输出:
# Removed value: 25
# {'name': 'Alice', 'city': 'Wonderland'}

在上述示例中,使用 del 关键字删除了键为 'age' 的键值对,而使用 pop() 方法删除了键为 'age' 的键值对,并返回了对应的值。

🫐字典的清空

要清空整个字典,可以使用 clear() 方法:

# 示例:清空整个字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}

my_dict.clear()
print(my_dict)
# 输出: {}

以上操作都是在原地修改字典,即不创建新的字典而是直接修改原有字典。这些插入和删除操作使得字典成为一个灵活且方便使用的数据结构。

🫐字典的优点

  • 键值对: 字典使用键值对的形式,便于通过键快速查找值,提高查找效率。
  • 无序性: 从Python 3.7开始,字典保持元素的插入顺序,但字典本身是无序的。

🫐字典的适用场景

  • 存储和表示实体之间的关系,如用户信息、配置文件等。
  • 需要高效通过键查找值的情况,例如数据库查询、快速索引。

🫐字典的执行效率

  • 查询: 字典的查询操作是常数时间复杂度 O(1),因为它通过键进行快速查找。
  • 插入和删除: 字典的插入和删除操作也是常数时间复杂度 O(1)。

🌰集合(Set)

🫐集合的基本概念

集合是一种无序、不重复的元素集。在Python中,集合通常称为Set。

# 示例:创建一个简单的集合
my_set = {1, 2, 3, 4, 5}
print(my_set)  # 输出: {1, 2, 3, 4, 5}

集合(Set)是 Python 中用于存储无序且唯一元素的数据结构。插入和删除元素是集合中常见的操作。以下是集合的插入和删除操作的示例:

🫐集合的插入操作

集合中插入元素可以使用 add() 方法:

# 示例:使用 add() 方法插入元素
my_set = {1, 2, 3}

# 插入新元素 4
my_set.add(4)

print(my_set)
# 输出: {1, 2, 3, 4}

在上述示例中,通过 add() 方法成功地插入了新的元素 4。

🫐集合的更新操作

如果插入的元素已经存在于集合中,插入操作将不产生任何效果,不会导致元素重复:

# 示例:插入已存在的元素
my_set = {1, 2, 3}

# 插入已存在的元素 2
my_set.add(2)

print(my_set)
# 输出: {1, 2, 3}

在上述示例中,尝试插入已存在的元素 2,并未改变集合的内容。

🫐集合的删除操作

集合的删除操作可以使用 remove()discard() 方法:

🥑使用 remove() 方法删除指定元素
# 示例:使用 remove() 方法删除指定元素
my_set = {1, 2, 3, 4}

# 删除元素 3
my_set.remove(3)

print(my_set)
# 输出: {1, 2, 4}
🥑使用 discard() 方法删除指定元素
# 示例:使用 discard() 方法删除指定元素
my_set = {1, 2, 3, 4}

# 删除元素 3
my_set.discard(3)

print(my_set)
# 输出: {1, 2, 4}

remove() 方法和 discard() 方法的区别在于,如果要删除的元素不存在于集合中,remove() 方法会引发 KeyError,而 discard() 方法不会产生异常。

🫐集合的清空

要清空整个集合,可以使用 clear() 方法:

# 示例:清空整个集合
my_set = {1, 2, 3, 4}

my_set.clear()
print(my_set)
# 输出: set()

以上操作都是在原地修改集合,即不创建新的集合而是直接修改原有集合。这些插入和删除操作使得集合成为一个非常方便用于去重和集合运算的数据结构。

🫐集合的优点

  • 无重复元素: 集合中的元素是唯一的,适合存储不重复的数据。
  • 集合运算: 支持集合运算,如并集、交集、差集等。

🫐集合的适用场景

  • 去除重复元素,例如统计文章中不同单词的个数。
  • 进行集合运算,解决数学问题或需要集合操作的场景。

🫐集合的执行效率

  • 查询: 集合的查询操作是平均常数时间复杂度 O(1)。
  • 插入和删除: 集合的插入和删除操作也是平均常数时间复杂度 O(1)。

🌰数组

🫐数组的基本概念

数组是一种有序、可变的数据结构,由相同类型的元素组成。在Python中,可以使用NumPy库提供的数组

对象numpy.array来创建数组。

# 示例:创建一个简单的数组
import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
print(my_array)  # 输出: [1 2 3 4 5]

在 Python 中,数组通常是指列表(List)这种有序、可变的数据结构。数组的插入和删除操作涉及到改变数组的结构。以下是列表作为数组时的插入和删除操作示例:

🫐列表(数组)的插入操作

在列表中插入元素可以使用 insert() 方法,该方法接受两个参数:要插入的位置(索引)和要插入的元素。

# 示例:插入元素到指定位置
my_list = [1, 2, 3, 4, 5]
my_list.insert(2, 'inserted')
print(my_list)
# 输出: [1, 2, 'inserted', 3, 4, 5]

在上述示例中,元素 'inserted' 被插入到索引为 2 的位置。

🫐列表(数组)的删除操作

列表的删除操作可以使用多种方式,其中最常用的是 pop()remove() 方法。

🥑使用 pop() 方法删除指定索引处的元素
# 示例:使用 pop() 方法删除指定索引处的元素
my_list = [1, 2, 'inserted', 3, 4, 5]
removed_element = my_list.pop(2)
print(f"Removed element: {removed_element}")
print(my_list)
# 输出:
# Removed element: inserted
# [1, 2, 3, 4, 5]
🥑使用 remove() 方法删除指定值的元素
# 示例:使用 remove() 方法删除指定值的元素
my_list = [1, 2, 3, 4, 5]
my_list.remove(3)
print(my_list)
# 输出: [1, 2, 4, 5]

在上述示例中,通过 pop() 方法删除了索引为 2 处的元素,而使用 remove() 方法删除了值为 3 的元素。

🥑使用 del 语句删除指定索引处的元素或整个列表切片
# 示例:使用 del 语句删除指定索引处的元素
my_list = [1, 2, 3, 4, 5]
del my_list[2]
print(my_list)
# 输出: [1, 2, 4, 5]

# 示例:使用 del 语句删除整个列表切片
del my_list[1:3]
print(my_list)
# 输出: [1, 5]

del 语句还可以用于删除整个列表切片,如示例所示。

🫐列表(数组)的清空

要清空整个列表,可以使用 clear() 方法:

# 示例:清空整个列表
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)
# 输出: []

以上操作都是在原地修改列表,即不创建新的列表而是直接修改原有列表。这些操作允许你在列表中进行灵活的插入和删除元素的操作,根据具体需求选择合适的方法。

🫐数组的优点

  • 数学运算: 数组支持丰富的数学运算,适合进行科学计算和数据分析。
  • 高效存储: 数组的元素类型相同,内存连续存储,提高存储效率。

🫐数组的适用场景

  • 高性能数值运算,如机器学习中的矩阵运算。
  • 大规模数据集的处理,例如图像处理、信号处理等。

🫐数组的执行效率

  • 查询: 数组通过索引进行访问,因此查询操作是常数时间复杂度 O(1)。
  • 插入和删除: 数组的插入和删除操作在中间或开头是线性时间复杂度 O(n),而在末尾是常数时间复杂度 O(1)。

🌰区别与选择

🫐区别

  • 列表和字典: 列表适用于有序数据的存储,而字典适用于通过键快速查找值的场景。
  • 集合和数组: 集合适用于处理不重复的数据,而数组适用于相同类型元素的高效数学运算和大规模数据集的处理。

🫐选择

  • 需要有序、可变集合时选择列表。
  • 需要通过键快速查找值时选择字典。
  • 需要处理不重复元素时选择集合。
  • 需要高性能数值运算时选择数组。

🌰总结与应用

选择合适的数据结构是程序设计中的重要环节。列表、字典、集合和数组各自有着独特的特点和优势,根据具体问题的性质和需求进行选择是至关重要的。深入理解这些数据结构的特性和用法,有助于在编程中更高效地解决问题,提高代码的性能和可读性。在实际应用中,根据数据的特点和操作的要求,选择合适的数据结构是优化程序性能的关键一步。


🏫博客主页:魔王-T

🥝大鹏一日同风起 扶摇直上九万里

??感谢大家点赞👍收藏?评论??


文章来源:https://blog.csdn.net/qqq1994_0810/article/details/135076799
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。