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(差)和 ...
随机推荐
- 【Spark学习】Apache Spark配置
Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4137969.html Spar ...
- AndroidAsync :异步Socket,http(client+server),websocket和socket.io的Android类库
AndroidAsync是一个用于Android应用的异步Socket,http(client+server),websocket和socket.io的类库.基于NIO,没有线程.它使用java.ni ...
- Nginx 工作原理和优化、漏洞
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locat ...
- 利用phantomjs模拟QQ自动登录
之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...
- easily add files to META-INF in NetBeans
http://georgeinfo.blog.163.com/blog/static/16368334120101019104044650/ ————————————————————————————— ...
- 【三支火把】---CDS5516舵机调试以及自己的感想!
我依然坚持,任何一次自己的心有感触都要及时的记录下来,这样你的努力才是真正的努力. 这两天一直在用STM32调试CDS5516舵机,其实很简单,但是却花了将近两天的时间,过程之曲折我就不说了,先总结一 ...
- 一个 C# 获取高精度时间类(调用API QueryP*)
如果你觉得用 DotNet 自带的 DateTime 获取的时间精度不够,解决的方法是通过调用 QueryPerformanceFrequency 和 QueryPerformanceCounter这 ...
- opennebula 编译日志
[root@localhost opennebula-]# scons mysql=yes scons: Reading SConscript files ... Testing recipe: xm ...
- JAVA 正则表达式 (超详细)
(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中 ...
- WinForms 新窗体后台打开完美的解决
最近在做浏览器开发时,想要实现 IE 6那种多窗体,又允许后台打开而不抢占视野的方式. WinForms 应用程序中想要后台打开一个新的窗体,而不(抢焦).(遮挡)目前窗体. 需要注意的是,SW_SH ...