Python Set集合详解:创建、特性与常用操作方法

桃夭
桃夭
发布时间:2026-10-14 | 4人浏览过
原创

本文详细介绍Python中Set集合的基础知识与核心用法。内容涵盖Set的定义、无序且去重的特性、通过list创建Set的方法、成员判断操作(in)、遍历方式以及add和remove等更新策略。通过对比字典与列表,深入解析Set在数据去重和快速查找中的应用场景,帮助开发者掌握高效的数据处理技巧。

Python Set集合基础与创建

介绍

本文旨在深入解析Python中Set(集合)类型的基础概念及其实际应用场景。

Python中什么是set

在Python中,字典(dict)用于建立键(key)与值(value)之间的映射关系,且字典的键必须唯一。

当我们需要关注一组数据的唯一性,而无需关心对应的值时,Set便成为了理想的选择。它的核心作用在于确保集合内元素的不重复性。

Set存储一系列元素,其外观与List相似,但关键区别在于Set中的元素不允许重复,且内部存储是无序的。这一特性与Dict的键(key)非常类似。

创建Set的标准方式是调用set()构造函数,并传入一个List作为参数,List中的元素将转化为Set的元素:


>>> s = set(['A', 'B', 'C'])

我们可以通过打印语句查看Set的内容:


>>> print s
set(['A', 'C', 'B'])

需要注意的是,打印输出的格式虽然看起来像List,但它并非List。仔细观察可以发现,输出元素的顺序可能与原始List的顺序不一致,这是因为Set内部存储机制是无序的。

既然Set不允许包含重复元素,那么当我们传入包含重复元素的List时,会发生什么呢?


>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3

结果显示,Set会自动剔除重复项。例如,原始List包含4个元素,但转换后的Set仅保留3个不重复的元素。

Set的访问与成员判断

Python之 访问set

由于Set存储的是无序集合,因此无法通过索引下标来访问特定元素。访问Set中某个元素的实际含义,是判断该元素是否存在于Set中。例如,创建一个存储班级同学名字的Set:


>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])

我们可以利用in操作符进行判断:Bart是否是该班级的同学?


>>> 'Bart' in s
True

Bill是否是该班级的同学?


>>> 'Bill' in s
False

bart(小写)是否是该班级的同学?


>>> 'bart' in s
False

这表明大小写敏感,'Bart'和'bart'被视为两个完全不同的元素。

Set的核心特性与应用场景

Python之 set的特点

Set的内部结构与Dict类似,主要区别在于不存储value,因此判断元素是否存在于Set中的速度非常快。

Set存储的元素与Dict的键类似,必须是不可变对象(immutable)。因此,任何可变对象(如List或Dict)都不能放入Set中。

最后,Set存储的元素同样保持无序状态。

这些特点使得Set在哪些场景中发挥作用呢?

星期一至星期日可以使用字符串'MON', 'TUE', ..., 'SUN'来表示。

假设我们需要验证用户输入的星期几是否有效,如何判断用户的输入属于周一至周日之一?

虽然可以使用if语句进行判断,但这种方式非常繁琐:


x = '???' # 用户输入的字符串
if x!= 'MON' and x!= 'TUE' and x!= 'WED' ... and x!= 'SUN':
  print 'input error'
else:
  print 'input ok'

注意:if语句中的...表示未列出的其他星期名称,测试时需输入完整字符串。

如果预先创建一个包含'MON'到'SUN'的Set:


weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])

再判断输入是否有效,只需检查该字符串是否存在于Set中:


x = '???' # 用户输入的字符串
if x in weekdays:
  print 'input ok'
else:
  print 'input error'

这样,代码逻辑变得简洁明了。

Set的遍历与更新操作

Python之 遍历set

由于Set也是一种集合,遍历Set与遍历List类似,均可通过for循环实现。直接使用for循环可以遍历Set中的元素:


>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
...   print name
... 
Lisa
Adam
Bart

注意:观察for循环遍历Set时,元素的输出顺序可能与List不同,且在不同机器上运行的结果顺序也可能存在差异。

Python之 更新set

由于Set存储的是一组不重复且无序的元素,更新Set主要涉及两个操作:一是将新元素添加到Set中,二是从Set中删除已有元素。

添加元素时,使用Set的add()方法:


>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

如果添加的元素已存在于Set中,add()方法不会报错,但也不会重复添加该元素:


>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])

删除Set中的元素时,使用Set的remove()方法:


>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])

如果要删除的元素不存在于Set中,remove()方法会抛出错误:


>>> s = set([1, 2, 3])
>>> s.remove(4)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
KeyError: 4

因此,使用add()可以直接添加元素,而使用remove()前必须先判断元素是否存在。

结语

以上就是Python开发入门中关于Set使用的详细内容,更多关于Python Set的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表