欢迎光临
我们一直在努力

Python3的set类型

Python 中有一个数据结构叫 set,set 和 dict 类似,也是一组 key
的集合,但不存储 value。

由于 key 不能重复,所以在 set 中没有重复的成员。

set 定义

set 的定义需要提供一个 list 作为输入集合。

myset = set([1, False, "老鸟python"])
print(myset)

set 中成员的特性和 dict 成员的 key 一样,必须是可以 hash 的。

myset = set([1, [1, 2], "老鸟python"])  # 错误,成员 [1, 2] 不可 hash
print(myset)

set 中成员重复的话,只有一个起作用,这和 dict 的 key 一样。

myset = set([1, 1, "老鸟python"])
print(myset  # set([1, '老鸟python']))

set 是无序的,不可以通过下标访问。

myset = set([1, 1, "老鸟python"])
print(myset[0])  # 错误

set 内部的数据结构是 hash 表,所以定义完成后,set 内部成员的存储顺序不一定是初始化的顺序。

myset = set(["a", "b", "c"])
print(myset  # set(['a', 'c', 'b']))

set 的常用函数

通过 set 提供的 add 函数可以添加成员到 set 中。

myset = set(["a", "b", "c"])
myset.add("d")
print(myset)

通过 set 提供的 remove
函数可以删除成员,但如果删除的成员不存在,python 会抛出异常;set 还有一个 discard
函数也可以删除成员,并且会自动处理异常。

myset = set(["a", "b", "c"])
myset.remove("b")
print(myset)
myset.remove("d")   # 抛出异常
myset.discard("d")  # 不做任何处理

set 的 pop 函数从集合中移除成员,并返回移除的成员,pop 函数删除成员是从内存中第一个成员依次删除。注意:Python解释器版本不同,分配内存的顺序不一定相同,也有的解释器每次执行时分配的内存分配的顺序也不同。

myset = set(["a", "b", "c"])
print(myset)  # 假定内存顺序为:set(['a', 'c', 'b'])
myset.pop()
print(myset)  # set(['c', 'b'])
myset.pop()
print(myset)  # set(['b'])

注意事项:set 是无序集合,所以不能通过下标访问 set 成员,set 里面的成员和 dict 的 key
一样,而无 dict 的 value,所以 set 的成员无法通过 set[] 来获取成员。

set 交集和并集运算

set 可以看成数学意义上的无序和无重复元素的集合,因此,两个 set 可以做数学意义上的交集,并集等操作。

myset_one = set([1, 2, 3, 4])
myset_two = set([2, 4, 6, 8])

myset_three = myset_one & myset_two
myset_four = myset_one | myset_two

print(myset_three)  # set([2, 4]))
print(myset_four)   # set([1, 2, 3, 4, 6, 8]))

本节重要知识点

set 的定义和函数使用。

set 进行交集和并集运算。

赞(0) 打赏
未经允许不得转载:码农资源网 » Python3的set类型
分享到

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册