1.测试

 # python2和python3方法列表相同
ops23 = ['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update',
'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference',
'symmetric_difference_update', 'union', 'update'] for op in ops23:
try:
print('#'*10)
S_abc = set('abc')
S_cde = set('cde')
print(op,eval('S_abc.{}(S_cde)'.format(op)))
print('S_abc:',S_abc)
print('S_cde:',S_cde)
except Exception as why:
print(op,why)

2. 总结

(1)元素操作

S.add 添加hashable type,注意set为unhashable type

S.pop随机删除并返回,remove删除指定元素可能报错,discard删除指定元素不会报错

S.clear 清空

S.copy 浅复制shallow copy

(2)判断关系

S.isdisjoint不相交 S.issubset子集 S.issuperset超集

(3)集合操作

命名方法 运算符语法 图例结果 对应update
S.difference(S1) S-S1 A S -=S1
S.intersection(S1) S&S1 B S &=S1
S.symmetric_difference(S1) S^S1 A+C S ^=S1
S.union(S1) S|S1 A+B+C S |=S1

(a) S.xxx返回结果集合,S.xxx_update原地更新S,返回None,union对应方法为update而不是union_update

(b)命名方法相比运算符语法,S1可以是由可哈希的项目组成的任意迭代

>>> set('abc').union('cde')
set(['a', 'c', 'b', 'e', 'd'])
>>> set('abc').union(set('cde'))
set(['a', 'c', 'b', 'e', 'd'])
>>>

3.输出分析

 ##########
('add', TypeError("unhashable type: 'set'",))
##########
('clear', TypeError('clear() takes no arguments (1 given)',))
##########
('copy', TypeError('copy() takes no arguments (1 given)',))
Return a shallow copy of a set.
In [45]: S_abc.copy() == S_abc
Out[45]: True In [46]: S_abc.copy() is S_abc
Out[46]: False ##########
('difference', set(['a', 'b']))
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
##########
('difference_update', None)
('S_abc:', set(['a', 'b'])) #更新S1,留不同
('S_cde:', set(['c', 'e', 'd'])) ##########
('discard', None)
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd'])) ##########
('intersection', set(['c']))
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
##########
('intersection_update', None)
('S_abc:', set(['c'])) #更新S1,留交集
('S_cde:', set(['c', 'e', 'd'])) ##########
('isdisjoint', False)
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
Return True if two sets have a null intersection.
##########
('issubset', False)
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
##########
('issuperset', False)
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd'])) ##########
('pop', TypeError('pop() takes no arguments (1 given)',))
Remove and return an arbitrary set element.随机返回
##########
('remove', KeyError(set(['c', 'e', 'd']),))
########## ('symmetric_difference', set(['a', 'b', 'e', 'd']))
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
##########
('symmetric_difference_update', None)
('S_abc:', set(['a', 'b', 'e', 'd'])) #更新S1,所有异或 01 10
('S_cde:', set(['c', 'e', 'd'])) ##########
('union', set(['a', 'c', 'b', 'e', 'd'])) #并集
('S_abc:', set(['a', 'c', 'b']))
('S_cde:', set(['c', 'e', 'd']))
##########
('update', None) #更新S1为全集
('S_abc:', set(['a', 'c', 'b', 'e', 'd']))
('S_cde:', set(['c', 'e', 'd']))

python之集合set的更多相关文章

  1. Python 3 集合基础和概念!

    Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...

  2. Python的集合

    1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...

  3. Python 操作集合

    Python 操作集合 集合,set,主要用于数据的关系测试和去重处理,和列表类似,可以存储数据,列表中可以存储重复的数据,但是如果转化为集合之后,数据就会进行去重,然后保留唯一值:关系测试就是求多个 ...

  4. Python中集合set()的使用及处理

    在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...

  5. Python:集合操作总结

    集合是一组无序排列的不重复元素集 [注]:集合的最大作用是对一个序列进行去重操作 一.集合的分类 在Python中集合分为两类,为可变集合(set)和不可变集合(frozenset).对于可变集合(s ...

  6. python 的集合 set()操作

      Python 的集合 set(),是一个无序不重复元素集,可以用于关系测试和消除重复元素.     有以下运算:   1.创建一个set ()集合:   2.add:增加集合元素   3.clea ...

  7. python set集合(16)

    在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set. ...

  8. python frozenset集合(17)

    在前一篇文章中我们对 python set集合 做了详细的讲解,而本文讲解的 frozenset集合 其实和set集合类似!区别在于frozenset集合不能修改/添加/删除,其他功能和set集合一样 ...

  9. Python数据类型--集合(set)

    Python的集合是无序.可迭代的容器对象,所有元素放在一对大括号中{},元素之间使用逗号隔开,同一集合内的元素具有唯一性,不允许重复. 集合中只能包含数字.字符串.元组等不可变类型的数据,不能包含列 ...

  10. [python]set集合学习

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...

随机推荐

  1. 设计模式C++学习笔记之八(Adapter适配器模式)

      适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理.是将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工 ...

  2. System.Data.SqlClient.SqlException: 数据类型 text 和 varchar 在 equal to 运算符中不兼容。

    一.引起的源头 环境:vs2015,sqlserver2008 相关程序包:ef6 定义了一个实体article public class Article { public string Data{g ...

  3. VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题

    原文地址:http://blog.csdn.net/Chris_zhangrx/article/details/78947526 在用 VS2015 编译 Debug 版的 openCV 源码时,最后 ...

  4. 021_nginx动态upstream检查

    GET: 请求指定的页面信息,并返回实体主体.HEAD: 只请求页面的首部. #参考:http://tengine.taobao.org/document_cn/http_upstream_check ...

  5. 46)django-发送邮件

    django已封装好了邮件发送功能,可以直接调用发送模块 1. 配置相关参数 如果用的是 阿里云的企业邮箱,则类似于下面: 在 settings.py 的最后面加上类似这些 EMAIL_BACKEND ...

  6. 小白6步搞定vue脚手架创建项目

    1.安装node及npm node -v (测试node是否安装成功)npm -v(测试npm是否安装成功) 2.安装cnpm npm install -g cnpm --registry=http: ...

  7. C#标准体重判断

  8. git reset --hard xxxxxxx

    关于git reset --hard xxxxxxx命令之Git版本回退 今晚代码写着写着就头脑有点发懵,手指也不听使唤了竟然让我敲出了 git reset --hard 命令,然后的然后就是之前所有 ...

  9. Oracle 数据库导入与出

    Oracle 数据库导入与出 导出( EXPORT )是用 EXP 将数据库部分或全对象的结构和导出 . 导入( 导入( IMPORT )是用 )是用 IMP IMP将 OS 文件中的对象结构和数据装 ...

  10. Confluence 6 Cron 表达式

    一个 cron 表达式是以 6-7 时间字段来定义一个计划任务是如何按照时间被执行的.每一个字段中的数据库而已为数字或者是一些特定的字符串来进行表达.每一个字段是使用空格或者 tab 进行分隔的. 下 ...