博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python集合set
阅读量:5241 次
发布时间:2019-06-14

本文共 1822 字,大约阅读时间需要 6 分钟。

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

集合是不可哈希的,即集合可变,集合内的元素是可哈希的,即元素不可变

1集合的创建

由于集合没有自己的语法格式,只能通过集合的工厂方法可变集合set()和不可变集合frozenset()创建

s1 = set('alvin') s2= frozenset('yuan') print(s1,type(s1))  #{
'l', 'v', 'i', 'a', 'n'}
print(s2,type(s2)) #frozenset({
'n', 'y', 'a', 'u'})

 

2、访问集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

s1 = set('alvin')print('a' in s1)print('b' in s1)#s1[1]  #TypeError: 'set' object does not support indexing for i in s1:    print(i)#    # True# False# v# n# l# i# a

3、更新集合

可使用以下内建方法来更新:

s.add()

s.update()
s.remove()

注意只有可变集合才能更新:

# s1 = frozenset('alvin')# s1.add(0)  #AttributeError: 'frozenset' object has no attribute 'add' s2=set('alvin')s2.add('mm')print(s2)  #{
'mm', 'l', 'n', 'a', 'i', 'v'} s2.update('HO')#添加多个元素print(s2) #{
'mm', 'l', 'n', 'a', 'i', 'H', 'O', 'v'} s2.remove('l')print(s2) #{
'mm', 'n', 'a', 'i', 'H', 'O', 'v'}

 

1   in ,not in

2   集合等价与不等价(==, !=)
3   子集、超集(<,>)

s=set('alvinyuan')s1=set('alvin')print('v' in s)print(s1

 

4   联合(|)--并集

      联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。

s2=set('1234')s3=set('4567')print(s2.union(s3))  #{
'5', '6', '3', '4', '1', '2', '7'}print(s2|s3) #{
'5', '6', '3', '4', '1', '2', '7'}

 

5、交集(&)

  与集合and等价,交集符号的等价方法是intersection()

s2=set('1234')s3=set('4567')print(s2.intersection(s3))  #{
'4'}print(s2&s3) #{
'4'}

 

6、差集(-)

  等价方法是difference()

s2=set('1234')s3=set('4567')print(s2.difference(s3))  #{
'1', '2', '3'}print(s2-s3) #{
'1', '2', '3'}

 

7、对称差集(^)

  对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()

s2=set('1234')s3=set('4567')print(s2.symmetric_difference(s3))  #{
'2', '5', '1', '7', '6', '3'}print(s2^s3) #{
'2', '5', '1', '7', '6', '3'}

 

转载于:https://www.cnblogs.com/xiaoyaz/p/7612308.html

你可能感兴趣的文章
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
Android实现静默安装与卸载
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
解决php -v查看到版本与phpinfo()版本不一致问题
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>