python3 set操作方法

set 属于不可哈希类型数,但是set 内只能放入可哈希数据,如int,str,tuple。bool也可放入,但是不会显示。

set的元素是唯一且无序的,所以可以用来去重,如list(set(list)),因为set 内容元素是可哈希的,所以对set内容只能增删,不能直接修改。

但因为setde 特性,set可以求差集、并集、反交集、子集和超集等

 

add 将一个元素加入set中,如已有则不做修改

>>> s.add(1)

>>> s = {1,2,3,4}
>>> s.add(1)
>>> s
{1, 2, 3, 4}

>>> s.add(7)
>>> s
{1, 2, 3, 4, 7}

 

update 以最小元素插入set,已有元素不做修改

>>> s = {1,2,3,4}

>>> s.update('qqqrft')
>>> s
{'t', 1, 2, 3, 4, 'f', 'r', 'q'}

>>> s.update((1,2,3,4))
>>> s
{'t', 1, 2, 3, 4, 'f', 'r', 'q'}

>>> s.update((8,9,6))
>>> s
{'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q'}

 

 

pop 随机删除元素,有返回值

>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}


>>> s
{'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}

>>> s.pop()
't'
>>> s
{1, 2, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}

>>> s.pop()
1
>>> s
{2, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}

 

remove 按元素删除,如无这个元素则会报错


>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}

>>> s.remove(1)
>>> s
{'t', 2, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}

>>> s.remove(1)
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    s.remove(1)
KeyError: 1

 

clear 清空set,返回空set;空set为set(), {}为空dict。

>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s.clear()
>>> s
set()

 

del 删除set

>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> del s
>>> s
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    s
NameError: name 's' is not defined

 

discard 删除制定元素,如没有该元素则不做任何操作

>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}

>>> s.discard(2)
>>> s
{'t', 1, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}

>>> s.discard(2)
>>> s
{'t', 1, 3, 4, 6, 'f', 8, 9, 'o', 'r', 'q'}


 

for

>>> s = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> for i in s:
	print(i)

	
t
1
2
3
4
6
f
8
9
o
r
q

 

 

交集

inintersection 返回s1 和s2相交的集合

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}

>>> s3 = s1.intersection(s2)
>>> s3
{1, 2, 3, 4, 6, 8, 9}

 

 

并集 

| 将s1和s2合并为s3

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}

>>> s3 = s1 | s2
>>> s3
{'t', 1, 2, 3, 4, 0, 6, 5, 8, 9, 7, 'o', 'r', 'f', 'q'}

 

 

反交集

^ 和 symmetric_difference 将s1和s2共同的部分去掉,剩下的集合

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}
>>> s3 = s1 ^ s2
>>> s3
{0, 5, 7, 'f', 't', 'o', 'r', 'q'}


>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}
>>> s3 = s1.symmetric_difference(s2)
>>> s3
{0, 5, 7, 'f', 't', 'o', 'r', 'q'}

 

 

差集

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}
>>> s3 = s1 - s2                   #返回s1独有的
>>> s3
{'t', 'f', 'o', 'r', 'q'}

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}
>>> s3 = s1.difference(s2)          #返回s1独有的
>>> s3
{'t', 'f', 'o', 'r', 'q'}

 

 

子集和超集

>>> s1 = {1,2,3}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}
>>> s3 = s1 < s2          #s1是s2的子集
>>> s3
True

>>> s3 = s1.issubset(s2)
>>> s3                    #s1是s2的子集
True



>>> s2 > s1
True                    #s2是s1的超集

>>> s2.issuperset(s1)
True                    #s2是s1的超集

 

 

other 

symmetric_difference_update  将s1中s2的东西删除

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}

>>> s1.difference_update(s2)
>>> s1
{'t', 'f', 'o', 'r', 'q'}
>>> s2
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

 

symmetric_difference_update 删除s1和s2相同的并把s2独有的加入到s1中

>>> s1 = {'t', 1, 2, 3, 4, 6, 'f', 8, 9, 'r', 'q','o'}
>>> s2 = {1,2,3,4,5,6,7,8,9,0}

>>> s1.symmetric_difference_update(s2)

>>> s1
{'t', 0, 'f', 5, 7, 'o', 'r', 'q'}
>>> s2
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值