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

>>> 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. openstack 网络

    物理节点hosts解析配置

  2. notepad++汉字突然横过来了

    修改notepad++,汉字突然横过来了,如图, 百度了一下,原来是因为选择的字体"@微软雅黑"前面的@符号惹的祸,改成"微软雅黑"就没事了.

  3. Java缓存学习之三:CDN缓存机制

    CDN是什么? 关于CDN是什么,此前网友详细介绍过. CDN是Content Delivery Network的简称,即"内容分发网络"的意思.一般我们所说的CDN加速,一般是指 ...

  4. Gym 100507A About Grisha N. (水题)

    About Grisha N. 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/A Description Grisha N. t ...

  5. Linux的运行级别和chkconfig用法

    Linux的运行级别和chkconfig用法        一.Linux的运行级别 在装MySQL的时候,才知道了Linux的运行级别这么一回事.汗…自己太水了…下面总结一下: 什么是运行级别呢?简 ...

  6. iOS 将图片保存到本地

    //将图片保存到本地 + (void)SaveImageToLocal:(UIImage*)image Keys:(NSString*)key {     NSUserDefaults* prefer ...

  7. ext4.0绘制chart(柱状图,条形图)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  8. C++库研究笔记——操作符重载实现类型转换&这样做的意义

    目标: 已知这个接口: std::vector<double> add_vec(double *d1, double *d2) { ..... return result; } 我们自定义 ...

  9. 在VB中使用Linq To SQLite注意事项

    昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...

  10. JQuery ajax请求一直返回Error(parsererror)

    $.ajax({ type :"post", url :"busine_in.action", timeout : 40000, data: "cen ...