Python 中 Set 与 List 的区别

2024 年 12 月 3 日 | 阅读 4 分钟

在本文中,我们将讨论 Python 中 Set 和 List 之间的区别。Set 和 List 是 Python 中的数据结构,用于以有效的方式存储和组织数据。

列表

Python 中的 List 是元素的有序集合,允许重复。List 使用方括号 [] 定义,可以通过索引访问、修改或删除元素。List 可以包含任何类型的对象,包括其他 List,从而实现复杂的数据结构。

List 因其能够按特定顺序存储项目序列而具有通用性,并被广泛使用。它们支持各种操作,如追加、扩展、切片和排序。List 是可变的,这意味着可以在创建后添加、删除或修改元素。

以下是 List 的重要特性:

  • 有序且带索引: List 维护元素的顺序,允许通过索引和切片来访问或修改特定元素。
  • 可变: List 可以在创建后进行更改;可以添加、删除或修改元素。
  • 允许重复: List 可以包含重复的元素,这意味着相同的值可以出现多次。
  • 异构元素: List 可以存储不同数据类型的元素,包括整数、字符串和其他 List。
  • 动态大小: List 在添加或删除元素时会自动调整大小,无需预先定义其大小。

示例

输出

JavaTpoint data List: 
[]

 The JavaTpoint List of numbers: 
[12, 24, 64, 18, 3, 201, 65, 35, 27, 29, 58, 42, 87, 30, 28, 79, 4, 90]

List Items: 
let's
Python
learn
JavaTpoint
from

List1 =  [9, 3, 6, 19, 67, 'Hey', 'JavaTpoint', 78, 2, 1]
List2 =  [9, 3, 6, 19, 67, 78, 'Hey', 'JavaTpoint', 2, 1]
False

Set

Python 中的 Set 是唯一元素的无序集合,这意味着它不允许重复。Set 使用花括号 {} 或 set() 构造函数定义。由于 Set 是无序的,元素没有特定位置,因此无法进行索引。Set 是可变的,这意味着您可以在创建后添加或删除元素,但它们只能包含不可变(可哈希)的项目,如数字、字符串和元组。

Set 特别适用于成员测试(in)、从序列中删除重复项以及执行数学运算(如并集、交集和差集)等操作。由于底层哈希表实现,这些操作非常高效,add、remove 和 lookup 操作的平均时间复杂度为 O(1)。

以下是 Set 的重要特性:

  • 无序: Set 不维护任何特定的元素顺序。
  • 唯一元素: Set 自动确保所有元素都是唯一的,不允许重复。
  • 可变: Set 可以在创建后进行修改,允许添加或删除元素。
  • 高效的成员测试: Set 为检查元素是否在 Set 中提供快速操作,平均时间复杂度为 O(1)。
  • 支持 Set 操作: Set 支持并集、交集和差集等数学运算,这对于比较集合很有用。

示例

输出

Intial JavaTpoint Set: 
set()

 Storing the set by using the Object: 
{'t', 'v', 'a', 'r', 'T', 'l', 'n', 'y', 'e', ' ', 'h', 'P', 'p', 'f', 'o', 's', 'i', 'J', 'm'}

 Storing the set by using the List: 
{'JavaTpoint', "let's", 'learn', 'from', 'Python'}

List 与 Set 的比较

列表集合 (Sets)
List 是有序的。Set 是无序的。
List 是可变的。Set 是可变的,但只能存储不可变元素。
List 中的元素可以更改或替换。元素不能被更改或替换。

结论

总而言之,Python 中的 List 和 Set 都根据其特性服务于不同的目的。List 最适合那些顺序很重要、允许重复以及需要通过索引访问或修改元素的场景。它们的通用性使其适用于各种应用。另一方面,Set 最适合那些需要元素唯一性且顺序无关紧要的情况。Set 为成员测试和 Set 相关的数学函数提供了高效的操作。了解 List 和 Set 之间的差异,可以帮助您在 Python 编程中根据具体需求选择合适的数据结构。