python(3)-集合
集合就是把不同的元素组织在一起,但在集合中不允许有重复的元素。
>>> a = set() #创建集合
>>> type(a)
<class 'set'>
集合中不允许出现重复的元素
>>> a.add('jack') #向集合中添加元素
>>> print(a)
{'jack'}
>>> a.add("jack") #再次向集合中添加同样的元素
>>> print(a)
{'jack'} #同样的元素只能出现一次
集合的访问:
因为集合是无序的,所以不能对它进行切片,只能遍历,in 或 not in 等方法
>>> s = set("fjihutiejhgir")
>>> print(s)
{'u', 'h', 'i', 'e', 'g', 'j', 't', 'r', 'f'}
>>> a in s
False
>>> a not in s
True
>>> for i in s:
... print(i)
...
u
h
i
e
g
j
t
r
f
>>>
向集合添加元素,删除元素
>>> s = set("a")
>>> s.update("b") #添加元素
>>> print(s)
{'b', 'a'}
>>> s.add("c") #添加元素
>>> print(s)
{'b', 'a', 'c'}
>>> s.remove("a") #删除元素
>>> print(s)
{'b', 'c'}
>>>
清空集合元素及删除集合
>>> s.clear()
>>> print(s)
set()
>>> del s
>>> print(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 's' is not defined
下面重温一下并集,交集,差集的概念

差集,difference() 返回一个新集合
>>> s1 = set("abcdefg")
>>> s2 = set("efghijk")
>>> s1.difference(s2) #s1与s2的差集
{'b', 'a', 'd', 'c'}
>>> s2.difference(s1) #s2与s1的差集
{'j', 'h', 'i', 'k'}
交集,& 或 intersection() 返回一个新集合
>>> s1&s2
{'g', 'f', 'e'}
>>> s3 = s1&s2
>>> print(s3)
{'g', 'f', 'e'}
>>> s4 = s1.intersection(s2)
>>> print(s4)
{'g', 'f', 'e'}
>>>
并集, | 或 union() 返回一个新集合
>>> s3 = s1|s2
>>> print(s3)
{'h', 'a', 'd', 'e', 'i', 'k', 'g', 'b', 'j', 'f', 'c'}
>>> s4 = s1.union(s2)
>>> print(s4)
{'h', 'a', 'd', 'e', 'i', 'k', 'g', 'b', 'j', 'f', 'c'}
集合是不能相加,但可以相减
>>> s1-s2
{'b', 'a', 'd', 'c'}
>>> s3 = s1+s2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'
集合之间的and , or
>>> s1 = set("abc")
>>> s2 = set("cde")
>>> s1 and s2 #取s2
{'c', 'd', 'e'}
>>> s1 or s2 #取s1
{'b', 'a', 'c'}
difference_update() 传什么进来就删除什么
>>> s1 = set("abcdefg")
>>> s1.difference_update("a")
>>> print(s1)
{'d', 'e', 'g', 'b', 'f', 'c'}
intersection_update() 还是看例子吧,好理解
>>> s1 = set("abcdefg")
>>> s2 = set("efghij")
>>> s1.intersection_update(s2) #在s1中只保留s1和s2中都有的元素
>>> print(s1)
{'g', 'f', 'e'}
pop() 在集合中随机删除一个元素并返回该元素,此方法不能带参数
>>> s1.pop("a")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop() takes no arguments (1 given)
>>> s1.pop()
'a'
>>> s1.pop()
'd'
s1.symmetric_difference(s2) #取出两边的差集
>>> s1 = set("abcdefg")
>>> s2 = set("efghij")
>>> s1.symmetric_difference(s2)
{'j', 'h', 'b', 'a', 'd', 'c', 'i'}
最觉的应用,便是去除重复的元素
>>> li = [1,1,2,2,3,3,4,4,5,5,6,6]
>>> print(set(li))
{1, 2, 3, 4, 5, 6}
python(3)-集合的更多相关文章
- Python 3 集合基础和概念!
Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...
- Python的集合
1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...
- Python 操作集合
Python 操作集合 集合,set,主要用于数据的关系测试和去重处理,和列表类似,可以存储数据,列表中可以存储重复的数据,但是如果转化为集合之后,数据就会进行去重,然后保留唯一值:关系测试就是求多个 ...
- Python中集合set()的使用及处理
在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...
- Python:集合操作总结
集合是一组无序排列的不重复元素集 [注]:集合的最大作用是对一个序列进行去重操作 一.集合的分类 在Python中集合分为两类,为可变集合(set)和不可变集合(frozenset).对于可变集合(s ...
- python 的集合 set()操作
Python 的集合 set(),是一个无序不重复元素集,可以用于关系测试和消除重复元素. 有以下运算: 1.创建一个set ()集合: 2.add:增加集合元素 3.clea ...
- python set集合(16)
在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set. ...
- python frozenset集合(17)
在前一篇文章中我们对 python set集合 做了详细的讲解,而本文讲解的 frozenset集合 其实和set集合类似!区别在于frozenset集合不能修改/添加/删除,其他功能和set集合一样 ...
- Python数据类型--集合(set)
Python的集合是无序.可迭代的容器对象,所有元素放在一对大括号中{},元素之间使用逗号隔开,同一集合内的元素具有唯一性,不允许重复. 集合中只能包含数字.字符串.元组等不可变类型的数据,不能包含列 ...
- [python]set集合学习
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
随机推荐
- http协议中的Content-Type
今天对http协议中的Content-Type有所理解了 它的主要功给我的感觉,还是在前台(客户端)给服务器传输数据时,描述这个数据的格式. 比如,我只传一个表单数据,但这个表单中只有文本,没有其它的 ...
- public, protected, private, internal, protected internal简析
public是可访问权限最高的,比如姓名,每个人都可以知道别人的姓名,这个不是什么秘密 protected的访问权限要低些,只有子类才可以访问得到父类的protected属性.就好像老子的财产只有儿子 ...
- homework-06
围棋问题 关于代码的阅读,写注释,我的代码阅读量和阅读能力都有限,而且是关于没有基础的围棋问题,JAVA和C#混合的程序.不免参考了其他同学的思路,忘老师见谅. 1.playPrev(GoMove) ...
- EasyUI样式在IE下无法显示原因总结
1.js css顺序错误 <script type="text/javascript" charset="utf-8" src="js/jque ...
- iOS事件机制(二)
从上一篇的内容我们知道,在iOS中一个事件用一个UIEvent对象表示,UITouch用来表示一次对屏幕的操作动作,由多个UITouch对象构成了一个UIEvent对象.另外,UIResponder是 ...
- Azure 公网及内网ip绑定方法
此文章为我的云服务绑定情况,仅供参考,适用于已经创建vm,但开始未绑定vip,后期进行vip的绑定,注意:绑定ip会造成虚拟机暂时离线. -Location(vm所在地) 注意区分 北部和东部: Ch ...
- 宏_CRTIMP分析
CRTIMP是C run time implement的简写,C运行库的实现的意思. 作为用户代码,不应该使用这个东西. 该参数决定 运行时 到底用 动态链接库 还是静态链接 #ifndef _CRT ...
- My97DatePicker时间控件使用说明
常规调用: <input id="date01" type="text" onClick="WdatePicker()"/> & ...
- shell脚本的入参
shell脚本参数可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制.参数从第一个开始,在第九个结束.$0 程序名字$n 第n个参数值,n=1..9 $* 所有命令行参数$@ ...
- 离散信号MATLAB频谱分析程序
from http://blog.csdn.net/u012129372/article/details/26565611 %FFT变换,获得采样数据基本信息,时域图,频域图 %这里的向量都用行向量, ...