Python中set函数的使用

来源:互联网 发布:淘宝规则变更 编辑:程序博客网 时间:2024/05/16 07:50

Python中的set函数是一个无序不重复的元素集。主要用于关系测试和去除重复项。同时,set集合也支持数学上的关系运算,如union(并集),intersection(交集),difference(差集)和symmetric difference(对称差集)。

与其他类型的集合一样,set集合支持‘x in set','len(set)','for x in set'方法。但是由于set函数是无序集合,不会记录元素位置或者插入点,set函数并不支持indexing,slicing或者其他类型的类序列操作。

在Python3.3版本中,有两个内置set函数,分别是:set() 和 frozenset().两者的区别在于,set函数所获得的集合内容是可变动的,可以使用add(),update(),remove()函数增删集合内容。但也正是因为它是可变动的,所以不能用于字典中的key或者set集合里面的子集。frozenset函数所获得的集合内容已经生成便不能再变动,可以用做字典的key或者set集的子集。

 

相关函数方法的使用:

s = set(data)

len (s)

返回集合s的长度;

x in s

x是否在集合s当中;

s.isdisjoint(s1)

测试集合s与s1中数据关系,如果s中没有任何项在s1中,则返回True,否则返回False;

s.issubset(s1)

s <= s1

如果s是s1的子集,则返回True,否则返回False;

s < s1

如果s是s1的真子集,则返回true,否则为False;

s.issuperset(s1)

s >= s1

如果s1是s的子集,则返回True,否则返回False;

s > s1

如果s1是s的真子集,则返回True,否则返回False;

s.union(s1,s2...)

s | s1 | s2 ...

返回各集合的并集;

s.intersection(s1,s2...)

s & s1 & s2 ...

返回各集合的交集;

s.difference(s1,s2...)

s - s1 - s2 ...

集合s与其他集合s1,s2等的差集;

s.symmetric_difference(s1)

s ^ s1

返回在s中或者在s2中,但是不同时包含在两者中的元素;

s1 = s.copy()

将s复制给s1;

 

s.union(),s.issubset()等非操作符的方法可以将任何类型作为其参数,而使用>,<,|等方法时,则要求所有参数都必须是set或frozenset类型。

 

另外一些只可用于set集合但不能用于frozenset集合的方法:

 

s.update(s1,s2...)

s |= s1 | s2 ...

更新s,将s1,s2等集合的元素添加到s中;

s.intersection_update(s1,s2...)

set &= s1 & s2 ...

 更新集合s,只保留既在s中,又同时存在于s1,s2...等所有其他集合中的元素;

s.difference_update(s1,s2...)

s -= s1 | s2 ...

更新集合s,去除掉在s1,s2等其他集合中出现的元素;

s.symmetric_update(s1)

s ^= s1

更新集合s,只保留在s中或者在s1中但不同时存在于两个集合中的元素;

s.add(element)

向集合s中添加一个元素;

s.remove(element)

从集合s中删除一个元素,如果此元素在集合s中不存在则返回错误警告;

s.discard(element)

从集合s中删除一个元素,如果此元素在集合中不存在,则什么也不做;

s.pop()

从集合s中删除并返回任一元素(从测试结果来看,好像是按照在set中元素顺序从左向右依次删除),如果集合为空则返回错误警告;

s.clear()

清空集合。

 

 

原创粉丝点击