Python集合(set):快速查找与创建方法

1 下载量 83 浏览量 更新于2024-08-03 收藏 116KB PDF 举报
"这篇文档是关于Python基础教程中集合(set)的部分,主要讲解了Python集合的特性、用途以及创建方法。" 在Python编程语言中,集合(set)是一种非常实用且高效的数据结构,它主要用于存储无序且不重复的元素序列。与列表和字典相比,集合具有独特的特性和优势。集合中的元素没有特定的顺序,同时不允许重复,这使得集合成为执行成员测试(即判断某个元素是否存在于集合中)的理想工具。 集合的创建通常有两种方式:一是通过`set()`函数创建一个空集合,二是将一个列表或其他可迭代对象传给`set()`函数来创建包含这些元素的集合。例如: ```python In[1]: s = set() In[2]: s = set([1, 2, 3, 4, 5]) ``` 在上述代码中,`set()`函数创建了一个空集合,而`set([1, 2, 3, 4, 5])`则创建了一个包含整数1到5的集合。值得注意的是,如果传入的列表中有重复元素,集合会自动去除重复部分: ```python In[3]: s = set([1, 2, 3, 3, 5]) Out[3]: {1, 2, 3, 5} ``` 集合的内部实现基于哈希表,这意味着查找、添加或删除元素的时间复杂度都是O(1),这远优于列表的线性查找(O(n))。因此,当需要快速判断元素是否存在时,集合是首选数据结构,特别是在处理大量数据时。 然而,集合的元素必须是不可变的,这意味着列表、字典等可变对象不能作为集合的元素。尝试这样做会导致`TypeError`: ```python In[9]: s = {'a', [1, 2]} # TypeError: unhashable type: 'list' In[10]: s = {'a', {'a': 1}} # TypeError: unhashable type: 'dict' ``` 集合支持多种操作,如并集(union)、交集(intersection)、差集(difference)和对称差集(symmetric difference),这些操作提供了集合间元素的组合和比较功能。例如: ```python In[11]: s1 = {'a', 'b', 'c'} In[12]: s2 = {'c', 'd', 'e'} In[13]: s1.union(s2) # 找出两个集合的所有元素,不重复 Out[13]: {'a', 'b', 'c', 'd', 'e'} In[14]: s1.intersection(s2) # 找出两个集合共有的元素 Out[14]: {'c'} ``` 此外,集合也支持基本的数学运算,如增加新元素、删除元素等: ```python In[15]: s.add('f') # 添加元素 In[16]: s.remove('b') # 删除元素 ``` Python集合是一种高效的数据结构,适用于快速的成员测试、去重以及集合间的数学运算。其内部的哈希表实现确保了高效的查找性能,尤其在处理大量数据时。不过,需要注意集合内的元素必须是不可变类型。了解并熟练运用集合,可以显著提升Python代码的效率和可读性。