python3--set

set 对象是由具有唯一性的 hashable 对象所组成的无序多项集。常见的用途包括成员检测、从序列中去除重
复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。(关于其他容器对象请参看 dict ,
list tuple 等内置类,以及 collections 模块。)
与其他多项集一样,集合也支持 x in set , len(set) for x in set 。作为一种无序的多项集,集合
并不记录元素位置或插入顺序。相应地,集合不支持索引、切片或其他序列类的操作。
目前有两种内置集合类型, set frozenset set 类型是可变的 --- 其内容可以使用 add() remove()
这样的方法来改变。由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。 frozenset
类型是不可变并且为 hashable --- 其内容在被创建后不能再改变;因此它可以被用作字典的键或其他集合的元
素。
除了可以使用 set 构造器,非空的 set ( 不是 frozenset) 还可以通过将以逗号分隔的元素列表包含于花括号之
内来创建,例如 : {'jack', 'sjoerd'}
两个类的构造器具有相同的作用方式:
class set ( [ iterable ] )
class frozenset ( [ iterable ] )
返回一个新的 set frozenset 对象,其元素来自于 iterable 。集合的元素必须为 hashable 。要表示由集合
对象构成的集合,所有的内层集合必须为 frozenset 对象。如果未指定 iterable ,则将返回一个新的空
集合。
集合可用多种方式来创建 :
使用花括号内以逗号分隔元素的方式 : {'jack', 'sjoerd'}
使用集合推导式 : {c for c in 'abracadabra' if c not in 'abc'}
使用类型构造器 : set() , set('foobar') , set(['a', 'b', 'foo'])
set frozenset 的实例提供以下操作:
len(s)
返回集合 s 中的元素数量(即 s 的基数)。
x in s
检测 x 是否为 s 中的成员。
x not in s
检测 x 是否非 s 中的成员。
isdisjoint ( other )
如果集合中没有与 other 共有的元素则返回 True 。当且仅当两个集合的交集为空集合时,两者为
不相交集合。
issubset ( other )
set <= other
检测是否集合中的每个元素都在 other 之中。
set < other
检测集合是否为 other 的真子集,即 set <= other and set != other
issuperset ( other )
set >= other
检测是否 other 中的每个元素都在集合之中。
set > other
检测集合是否为 other 的真超集,即 set >= other and set != other
union ( *others )
set | other | ...
返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素。
intersection ( *others )
set & other & ...
返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。
difference ( *others )
set - other - ...
返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。
symmetric_difference ( other )
set ^ other
返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
copy ()
返回原集合的浅拷贝。
注意, union() intersection() difference() symmetric_difference() issubset()
issuperset() 方法的非运算符版本可以接受任何可迭代对象作为一个参数。相比之下,基于运算
符的对应方法则要求参数为集合对象。这就避开了像 set('abc') & 'cbs' 这样容易出错的结构,
而换成了可读性更好的 set('abc').intersection('cbs')
set frozenset 均支持集合与集合的比较。两个集合当且仅当每个集合中的每个元素均包含于另
一个集合之内(即各为对方的子集)时则相等。一个集合当且仅当其为另一个集合的真子集(即为后
者的子集但两者不相等)时则小于另一个集合。一个集合当且仅当其为另一个集合的真超集(即为后
者的超集但两者不相等)时则大于另一个集合。
set 的 实 例 与 frozenset 的 实 例 之 间 基 于 它 们 的 成 员 进 行 比 较。 例 如 set('abc') ==
frozenset('abc') 返回 True set('abc') in set([frozenset('abc')]) 也一样。
子集与相等比较并不能推广为完全排序函数。例如,任意两个非空且不相交的集合不相等且互不为对
方的子集,因此以下 所有 比较均返回 False : a<b , a==b , or a>b
由于集合仅定义了部分排序(子集关系),因此由集合构成的列表 list.sort() 方法的输出并无定义。
集合的元素,与字典的键类似,必须为 hashable
混 合 了 set 实 例 与 frozenset 的 二 进 制 位 运 算 将 返 回 与 第 一 个 操 作 数 相 同 的 类 型。 例 如 :
frozenset('ab') | set('bc') 将返回 frozenset 的实例。
下表列出了可用于 set 而不能用于不可变的 frozenset 实例的操作:
update ( *others )
set |= other | ...
更新集合,添加来自 others 中的所有元素。
intersection_update ( *others )
set &= other & ...
更新集合,只保留其中在所有 others 中也存在的元素。
difference_update ( *others )
set -= other | ...
更新集合,移除其中也存在于 others 中的元素。
symmetric_difference_update ( other )
set ^= other
更新集合,只保留存在于集合的一方而非共同存在的元素。
add ( elem )
将元素 elem 添加到集合中。
remove ( elem )
从集合中移除元素 elem 。如果 elem 不存在于集合中则会引发 KeyError
discard ( elem )
如果元素 elem 存在于集合中则将其移除。
pop ()
从集合中移除并返回任意一个元素。如果集合为空则会引发 KeyError
clear ()
从集合中移除所有元素。
请 注 意, 非 运 算 符 版 本 的 update() , intersection_update() , difference_update()
symmetric_difference_update() 方法将接受任意可迭代对象作为参数。
请注意, __contains__() , remove() discard() 方法的 elem 参数可能是一个 set 。为支持对一
个等价的 frozenset 进行搜索,会根据 elem 临时创建一个该类型对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值