集合就是把不同的元素组织在一起,但在集合中不允许有重复的元素。

>>> 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)-集合的更多相关文章

  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. 《Java数据结构与算法》笔记-CH3简单排序

    class ArrayBub { private long[] arr; private int nElement; public ArrayBub(int size) { arr = new lon ...

  2. jQuery-validate error messages in Twitter ...

    http://www.jefclaes.be/2012/11/jquery-validate-error-messages-in.html something satisfactory. In thi ...

  3. Struts2在Action中访问WEB资源

    什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...

  4. 如何解决paramiko执行与否的问题

    使用paramiko执行一些耗时比较长的命令的时候会出现实际上命令没有执行完就跳出的问题,怎么才能准确的判断命令执行完与否很重要,通过试验发现如下的方法可以解决这个难题: dabao_cmd = 'e ...

  5. javascript 获取HTML DOM父、子、临近节点

    在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有很 ...

  6. Lua学习笔记(一):搭建开发环境

    Lua是一个小巧高效的解释型脚本语言,可以方便的嵌入到任意的语言中,很多应用程序.游戏使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性.可扩展性.这其中包括魔兽世界.博德之门.愤怒的小鸟.VOC ...

  7. 在MVC项目中使用RDLC报表

    原文地址:http://www.cnblogs.com/wuhuacong/p/4109833.html RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用 ...

  8. 使用 EPPlus,NPOI,操作EXCEL

    NPOI,       读取xls文件(Excel2003及之前的版本)   (NPOI.dll+Ionic.Zip.dll)     http://npoi.codeplex.com/ EPPlus ...

  9. Hibernate映射解析——七种映射关系

    首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射.ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对 ...

  10. UVA1395

    // UVa1395 Slim Span // Rujia Liu #include<cstdio> #include<cmath> #include<cstring&g ...