Skip to main content
 首页 » 程序教程

Python集合set类型的常用操作方法

2016年05月26日32530

Python中除了字典,列表,元组还有一个非常好用的数据结构,那就是set了,灵活的运用set可以减去不少的操作。set是一个无序的元素集合,支持并、交、差及对称差等数学运算,但由于set不记录元素位置,因此不支持索引、分片等类序列的操作。那么Python集合set类型的常用操作方法有哪些呢?

Python的set类型和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。集合对象还支持union(联合),intersection(交),difference(差)和sysmmetricdifference(对称差集)等数学运算。

集合的关系

Python中的集合set类型跟数学里的集合与集合的关系是一样的,都有并集、交集、差集、对称差集等。具体的代码如下:

#!/usr/bin/env python
# coding:utf-8
s1 = {11, 22, 33, "风轻情淡", "你好"}
s2 = {44, 22, 33, "风轻情淡", "hello"}
# 并集或合集,可以使用符号|
# 结果为:{33, '你好', 11, 44, 'hello', 22, '风轻情淡'}
s3 = s1.union(s2)
print(s3)
# 交集,可以使用符号&
# 结果为:{33, '风轻情淡', 22}
s4 = s1.intersection(s2)
print(s4)
# 差集或相对补集,可以使用符号-
# 结果为:{'你好', 11}
s5 = s1.difference(s2)
print(s5)
# 对称差集,可以使用符号^
# 结果为:{'你好', 11, 44, 'hello'}
s6 = s1.symmetric_difference(s2)
print(s6)

如果intersectiondifferencesymmetric_difference三个方法名加上_update,则表示对前一个集合更新所操作的方法。

集合基本操作

Python集合set类型虽然不支持索引,切片操作(因为set是无序的),但是set类型一样支持创建、添加、清空、移除、更新、拷贝(浅拷贝)等操作的。具体的代码操作及结果如下:

#!/usr/bin/env python
# coding:utf-8
# 创建、添加、清空、移除、更新、拷贝(浅拷贝)
l1 = [11, 22, 33, "风轻情淡", "你好"]
# 创建集合set类型s1
s1 = set(l1)
# 添加元素
s1.add("hello")
# 结果为:{33, '你好', '风轻情淡', 11, 22, 'hello'}
print(s1)
# 移除元素,remove和discard都是移除一个元素,后者不存在不报错,前者不存在报错
s1.remove("你好")
s1.discard("你好")
# 结果为:{33, '风轻情淡', 11, 22, 'hello'}
print(s1)
# 删除一个元素,因为set无序的,所以删除的元素不确定,集合为空将报错
s1.pop()
# 结果为:{'风轻情淡', 11, 22, 'hello'}
print(s1)
# 更新多个元素,update接收列表为更新多项
s1.update([11, '22'])
# 结果为:{'风轻情淡', 11, '22', 22, 'hello'}
print(s1)
# 拷贝一份
s2 = s1.copy()
# 结果为:{'风轻情淡', 11, '22', 22, 'hello'}
print(s2)
# 清空一个集合
s1.clear()
# 结果为:set()
print(s1)

以上就是Python中集合set类型的关系和常用操作方法了。由于set类型中的元素是不可重复的,所以在爬虫应用中用来存储已经爬取的网址列表。

评论列表暂无评论
发表评论