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

>>> 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. 解决oracle启动的错误: ORA-00119 ORA-00132

    $ sqlplus / as sysdbaSQL>create pfile fromspfile修改$ORACLE_HOME/dbs下的文件initDEV.ora中的*.local_listen ...

  2. Hibernate之HQL查询

    一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...

  3. 03 javadoc

    javadoc从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档 1.标签.命令格式: 2.使用方式: 2.1 dos命令行格式:javadoc XXX.java 2.2 ec ...

  4. POJ 3660 Cow Contest (最短路dijkstra)

    MPI Maelstrom 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/G Description BIT has recen ...

  5. POJ 2777 Count Color (线段树成段更新+二进制思维)

    题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的 ...

  6. JS基础DOM篇之二:DOM级别与节点层次?

    通过上一篇我们大致了解了什么是DOM,今天我们继续深入了解. 1.DOM级别       在大家阅读DOM标准的时候,可能会看到DOM(0/1/2/3)级的字眼,这就是DOM级别.但实际上,DOM0级 ...

  7. mysql CASE WHEN的基础和多种用法

    CASE计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果. 两 ...

  8. Codeforces Round #192 (Div. 1) A. Purification 贪心

    A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...

  9. 谷歌插件开发(实现CSDN快速登陆)

    谷歌浏览器插件带来了很大的方便,于是就想着是不是也可以开发一个来用用.几经折腾下,开发了个CSDN快速 登陆的插件.下面简述一下开发的步骤. 1.开发工具:谷歌浏览器(我开发时用的是chrome 30 ...

  10. error LNK2019: unresolved external symbol / error LNK2001: 无法解析的外部符号

    在 vc++ 2008 和 vc++ 2010 编译时分别出现上面的错误.一般这种错误是由于引用函数未定义造成的,如外部类库未包含,实现代码未编写等. 但最终检查的结果,却是另外一种情况:文件名重名. ...