set和frozenset

set和frozenset皆为无序唯一值序列。set和frozenset最本质的区别是前者是可变的、后者是不可变的 。当集合对象会被改变时(例如添加、删除元素等),只能使用set ,一般来说使用fronzet的地方都可以使用set 。
frozenset的创建方法为:
frozenset([iterable])
例如:
>>> a = frozenset([3,4,5])>>> afrozenset([3, 4, 5])>>> 3 in aTrue>>> 6 in aFalse
>>> a = frozenset((1,'2',7))
>>> a
frozenset([1, '2', 7])

因为frozenset的不变性,其可以作为dictionary的键值及其他set的元素。其运行效率也高于set。 

运算符

equal

运算结果

len(s)

 

set 的长度

x in s

 

测试 x 是否是 s 的成员

x not in s

 

测试 x 是否不是 s 的成员

s.issubset(t)

s <= t

测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s >= t

测试是否 t 中的每一个元素都在 s 中

s.union(t)

s | t

返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s & t

返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s - t

返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s ^ t

返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()

 

返回 set “s”的一个浅复制



请注意:union(), intersection(), difference() 和 symmetric_difference() 这些非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。这样可以避免潜在的错误,如:为了更可读而使用 set('abc') & set('cbs') 来替代 set('abc').intersection('cbs')。从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。

运算符(voperator

等价于

运算结果

s.update(t)

s |= t

返回增加了 set t”中元素后的 set s

s.intersection_update(t)

s &= t

返回只保留含有 set t”中元素的 set s

s.difference_update(t)

s -= t

返回删除了 set t”中含有的元素后的 sets

s.symmetric_difference_update(t)

s ^= t

返回含有 set t”或者 set s”中有而不是两者都有的元素的 set s

s.add(x)

 

 set s”中增加元素 x

s.remove(x)

 

 set s”中删除元素 x, 如果不存在则引发KeyError

s.discard(x)

 

如果在 set s”中存在元素 x, 则删除

s.pop()

 

删除并且返回 set s”中的一个不确定的元素如果为空则引发 KeyError

s.clear()

 

删除 set s”中的所有元素


请注意:非运算符版本的 update(), intersection_update(), difference_update()symmetric_difference_update()将会接受任意 iterable 作为参数。从 2.3.1 版本做的更改:以前所有参数都必须是 sets



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值