Python Set集合详解:创建、特性与常用操作方法
本文详细介绍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的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









