Python集合,set操作

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

举例:

>>> x = set('spend')
>>> y = set(['test'])
>>> x,y
({'n', 's', 'e', 'd', 'p'}, {'test'})
>>> x = set('good')
>>> y = set(['good'])
>>> x,y
({'g', 'd', 'o'}, {'good'})        #重复的会被删除

>>> x = set('good')
>>> y = set('google')
>>> x,y
({'g', 'd', 'o'}, {'g', 'l', 'o', 'e'})
>>> x & y        #交集
{'g', 'o'}
>>> x | y        #并集
{'g', 'l', 'o', 'e', 'd'}
>>> x - y        #差集,项在x中,不在y中;
{'d'}
>>> y - x        #差集,项在y中,不在x中;
{'l', 'e'}
>>> x ^ y        #对称差集,项在x或者y中,但是不会同时出现在二者当中;
{'l', 'e', 'd'}

去掉列表里重复的元素:

>>> a = [111,222,333,444,333,555,111,777]
>>> b = set(a)
>>> b
{777, 555, 333, 111, 444, 222}
>>> c = [i for i in b]
>>> c
[777, 555, 333, 111, 444, 222]

 

集合:

集合(set)是一个无序的不重复元素序;

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典;

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()删除集合中的元素,该元素在指定的集合中不存在。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素
>>> s = set([3,5,8,10,20])
>>> t = set("Hello")
>>> s
{3, 5, 8, 10, 20}
>>> t
{'l', 'H', 'o', 'e'}        #只显示了一个l;
>>> 
>>> t.add('x')                #在t中添加一个x;
>>> s.update([15,10,30])        #更新,原数据不变;
>>> t
{'H', 'x', 'l', 'o', 'e'}
>>> s
{3, 5, 8, 10, 15, 20, 30}
>>> 
>>> t.remove('H')            #remove()删除;
>>> t
{'x', 'l', 'o', 'e'}
>>> len(s)                #set的长度;
7
>>> 
>>> x in s                #测试x是否是s的成员;
False
>>> x not in s            #测试x是否不是s的成员;
True
>>> 
>>> s.issubset(t)        #是否t中的每个元素都在s中;
False
>>> s >= t
False
>>> s.union(t)            #返回新的set包含s和t的每一个元素;
{3, 5, 8, 10, 15, 'x', 20, 'l', 'o', 'e', 30}
>>> s | t
{3, 5, 8, 10, 15, 'x', 20, 'l', 'o', 'e', 30}
>>> 
>>> s.intersection(t)       #返回s和t的公共元素
set()
>>> s & t
set()
>>> 
>>> s.difference(t)        #返回包含s中有的,但是t中没有的元素;
{3, 5, 8, 10, 15, 20, 30}
>>> s - t
{3, 5, 8, 10, 15, 20, 30}
>>> t - s                #返回包含t中有的,但是s中没有的元素;
{'x', 'l', 'o', 'e'}
>>> 
>>> s.symmetric_difference(t)    #返回一个新的set包含s和t中不重复的元素;
{3, 5, 8, 10, 15, 'x', 'l', 'o', 20, 'e', 30}
>>> s ^ t
{3, 5, 8, 10, 15, 'x', 'l', 'o', 20, 'e', 30}
>>> s.copy()                #返回set "s"的一个浅拷贝
{3, 20, 5, 8, 10, 30, 15}

运算符:

>>> s.update(t)    #返回增加了set “t”中元素后的set “s”
>>> s
{3, 5, 8, 10, 15, 'x', 20, 'l', 'o', 'e', 30}
>>> s |= t
>>> s
{3, 5, 8, 10, 15, 'x', 20, 'l', 'o', 'e', 30}
>>> 
>>> s.intersection_update(t)    #返回只保留含有 set “t”中元素的 set “s”
>>> s
{'x', 'l', 'o', 'e'}
>>> s &= t
>>> s
{'x', 'l', 'o', 'e'}
>>> 
>>> s = set([3,5,8,10,20])
>>> t = set("Hello")
 #返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”
>>> s.symmetric_difference_update(t)   
>>> s
{3, 'H', 5, 8, 10, 20, 'l', 'o', 'e'}
>>> s ^= t
>>> s
{3, 5, 8, 10, 20}
>>> s ^= t
>>> s
{3, 'H', 5, 8, 10, 20, 'l', 'o', 'e'}
>>> s.add("x")        #set “s”中添加元素x;
>>> s
{3, 5, 8, 10, 'x', 20}
>>> s.remove("x")    #从set “s”中删除元素x;
>>> s
{3, 5, 8, 10, 20}
>>> s.discard(x)    #如果set “s”中存在元素x,则进行删除;
>>> s
{3, 5, 8, 10, 20}
>>> s.pop()        #随机删除并返回set "s"中的一个元素,如果为空则引发 KeyError;
3
>>> s
{5, 8, 10, 20}
>>> s.clear()    #删除set “s”中的所有元素;
>>> s
set()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值