三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 579|回复: 0
打印 上一主题 下一主题

python3基础-set 基本函数与操作

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-9-5 11:14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
s.add( x ) 将元素 x 添加到集合s中,若重复则不进行任何操作
  1. >>> s = {1,2,'a'}  
  2. >>> s.add('b')  
  3. >>> s  
  4. {1, 'a', 2, 'b'}  
  5. >>> s.add(1)  
  6. >>> s  
  7. {1, 'a', 2, 'b'}  
复制代码

s.update( x ) 将集合 x 并入原集合s中,x 还可以是列表,元组,字典等,x 可以有多个,用逗号分开

  1. >>> s  
  2. {1, 'a', 2, 'b'}  
  3. >>> s.update({1,3})  
  4. >>> s  
  5. {1, 'a', 3, 'b', 2}  
  6. >>> s.update([1,4])  
  7. >>> s  
  8. {1, 'a', 3, 4, 'b', 2}  
  9. >>> s.update(1)  
  10. Traceback (most recent call last):  
  11.   File "<pyshell#264>", line 1, in <module>  
  12.     s.update(1)  
  13. TypeError: 'int' object is not iterable  
复制代码
s.discard( x )将 x 从集合s中移除,若x不存在,不会引发错误

  1. >>> s  
  2. {1, 'a', 3, 4, 'b', 2}  
  3. >>> s.discard(1)  
  4. >>> s  
  5. {'a', 3, 4, 'b', 2}  
  6. >>> s.discard(1)  
  7. >>> s  
  8. {'a', 3, 4, 'b', 2}  
复制代码
s.remove( x ) 将 x 从集合s中移除,若x不存在,会引发错误

  1. >>> s  
  2. {'a', 3, 4, 'b', 2}  
  3. >>> s.remove('a')  
  4. >>> s  
  5. {3, 4, 'b', 2}  
  6. >>> s.remove('a')  
  7. Traceback (most recent call last):  
  8.   File "<pyshell#273>", line 1, in <module>  
  9.     s.remove('a')  
  10. KeyError: 'a'  
复制代码
s.pop() 随机删除并返回集合s中某个值,注意,因为set是无序的,不支持下标操作,没有所谓的最后一个,pop()移除随机一个元素,这和其他数据结构不同


  1. >>> s  
  2. {3, 4, 'b', 2}  
  3. >>> s.pop()  
  4. 3  
复制代码
s.clear() 清空
len(s) set支持len操作
  1. >>> s = {1,2,3}  
  2. >>> len(s)  
  3. 3  
复制代码
x in s  set同样支持in操作
  1. >>> s  
  2. {4, 'b', 2}  
  3. >>> 1 in s  
  4. False  
  5. >>> 2 in s  
  6. True  
复制代码
s.union( x ) 返回s与集合x的交集,不改变原集合s,x 也可以是列表,元组,字典。
  1. >>> s1 = {1,2,3}  
  2. >>> s2 = {'a','b'}  
  3. >>> s1.union(s2)  
  4. {1, 2, 3, 'a', 'b'}  
  5. >>> s1  
  6. {1, 2, 3}  
复制代码
s.intersection( x ) 返回s与集合x的并集,不改变s, x 也可以是列表,元组,字典。

  1. >>> s1  
  2. {1, 2, 3}  
  3. >>> s2  
  4. {2, 3, 4}  
  5. >>> s1.intersection(s2)  
  6. {2, 3}  
  7. >>> s1  
  8. {1, 2, 3}  
复制代码
s.difference( x )返回在集合s中而不在集合 x 中的元素的集合,不改变集合s, x 也可以是列表,元组,字典。

  1. >>> s1  
  2. {1, 2, 3}  
  3. >>> s2  
  4. {2, 3, 4}  
  5. >>> s1.difference(s2)  
  6. {1}  
  7. >>> s1  
  8. {1, 2, 3}
复制代码
s.symmetric_difference( x ) 返回s和集合x的对称差集,即只在其中一个集合中出现的元素,不改变集合s, x 也可以是列表,元组,字典。

  1. >>> s1  
  2. {1, 2, 3}  
  3. >>> s2  
  4. {2, 3, 4}  
  5. >>> s1.symmetric_difference(s2)  
  6. {1, 4}  
  7. >>> s1  
  8. {1, 2, 3}  
复制代码
s.issubset( x ) 判断 集合s 是否是 集合x 子集
s.issuperset( x ) 判断 集合x 是否是集合s的子集
  1. >>> s1 = {1,2,3}  
  2. >>> s2 = {1,3}  
  3. >>> s2.issubset(s1)  
  4. True  
  5. >>> s1.issubset(s2)  
  6. False  
  7. >>> s1.issuperset(s2)  
  8. True  
复制代码
求交集,并集,差集,对称差集的另一种方法:

  1. >>> s1 = {1,2,3,'a'}  
  2. >>> s2 = {3,4,'b'}  
  3. >>> s1 & s2  #交集  
  4. {3}  
  5. >>> s1 | s2   #并集  
  6. {1, 'a', 3, 4, 'b', 2}  
  7. >>> s1 - s2  #差集  
  8. {1, 'a', 2}  
  9. >>> s1 ^ s2  #对称差集  
  10. {1, 2, 4, 'b', 'a'}  
复制代码
{ } 在布尔运算中表示 False,其他均为 True
回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-10-24 00:14 , Processed in 0.046575 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表