集合:对应数学中的集合类型。集合中的元素是唯一,且无序的。

创建集合

  方法一:使用{},注意python会自动删除重复元素

>>> number = {1,2,3,4,3,2,1}
>>> number
{1, 2, 3, 4}

  方法二:使用set()工厂函数,传递一个列表,元组或字符串

>>> temp = set([1,2,3,2,1])
>>> temp
{1, 2, 3}
>>> temp = set((1,2,3,2,1))
>>> temp
{1, 2, 3}
>>> temp = set("Hello Python")
>>> temp
{'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}

访问集合元素

  方法一:使用for把集合中元素一个一个读出来

>>> temp
{'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
>>> for i in temp:
... print(i, end = ' ')
...
n P H l y t o h e >>>

  方法二:使用in和not in来判断一个元素是否在集合中

>>> temp
{'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
>>> 'n' in temp
True
>>> 'N' in temp
False

添加元素:使用add()方法

>>> temp
{'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
>>> temp.add(1)
>>> temp.add(2)
>>> temp
{'n', 'P', 1, 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}

删除元素:使用remove()方法

>>> temp
{'n', 'P', 1, 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
>>> temp.remove(1)
>>> temp
{'n', 'P', 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
>>> temp.remove('H')
>>> temp
{'n', 'P', 2, ' ', 'l', 'y', 't', 'o', 'h', 'e'}

当需要定义一个不可变的集合时,可以使用frozeset

>>> num = frozenset(range(10))
>>> num
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
>>> num.remove(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'remove'

集合运算  

  子集

  子集,为某个集合中一部分的集合,故亦称部分集合。

  使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。

>>> a = set("Hello")
>>> b = set("Hello python")
>>> a < b
True
>>> a.issubset(b)
True

  并集

一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

>>> a
{'l', 'o', 'e', 'H'}
>>> b
{'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
>>> a | b
{'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
>>> a.union(b)
{'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}

交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。

>>> a
{'l', 'o', 'e', 'H'}
>>> b
{'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
>>> a & b
{'l', 'o', 'e', 'H'}
>>> a.intersection(b)
{'l', 'o', 'e', 'H'}

差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

>>> a
{'l', 'o', 'e', 'H'}
>>> b
{'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
>>> b - a
{'n', ' ', 'y', 't', 'h', 'p'}
>>> b.difference(a)
{'n', ' ', 'y', 't', 'h', 'p'}

集合的一些方法

方法 描述
add() 将元素添加到集合中
clear() 删除集合中的所有元素
copy() 返回集合的浅拷贝
difference() 将两个或多个集合的差集作为一个新集合返回
difference_update() 从这个集合中删除另一个集合的所有元素
discard() 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
intersection() 将两个集合的交集作为一个新集合返回
intersection_update() 用自己和另一个的交集来更新这个集合
isdisjoint() 如果两个集合有一个空交集,返回 True
issubset() 如果另一个集合包含这个集合,返回 True
issuperset() 如果这个集合包含另一个集合,返回 True
pop() 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
remove() 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
symmetric_difference() 将两个集合的对称差作为一个新集合返回
symmetric_difference_update() 用自己和另一个的对称差来更新这个集合
union() 将集合的并集作为一个新集合返回
update() 用自己和另一个的并集来更新这个集合

python学习笔记(十五)之集合的更多相关文章

  1. python学习第十五天集合的创建和基本操作方法

    集合是python独有的数据列表,集合可以做数据分析,集合是一个无序的,唯一的的数据类型,可以确定列表的唯一性,说一下集合的创建和基本常见操作方法 1,集合的创建 s={1,2,4} 也可以用set( ...

  2. python学习笔记(十五)-unittest单元测试的一个框架

    unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 ...

  3. python 学习笔记十五 web框架

    python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...

  4. python 学习笔记十五 django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  5. python学习笔记十五:日期时间处理笔记

    #-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...

  6. python学习笔记(十五)-异常处理

    money = input('输入多少钱:') months = input('还几个月:') try: res = calc(int(money),int(months)) except ZeroD ...

  7. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  8. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  9. Python学习笔记(五)

    Python学习笔记(五): 文件操作 另一种文件打开方式-with 作业-三级菜单高大上版 1. 知识点 能调用方法的一定是对象 涉及文件的三个过程:打开-操作-关闭 python3中一个汉字就是一 ...

  10. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

随机推荐

  1. PECE

     CE客户端边界路由器.与PE设备直连,主要功能是将VPN客户的路由通告给PE,以及从PE学习同一个VPN下其他站点的路由.PE和CE直连的运营商设备(运营商边界路由器). #PE和CE也可以是用一台 ...

  2. Windows连接Linux服务器中MySQL数据库-权限配置

    问题描述 在Windows系统中安装了监控MySQL数据库服务器性能的工具Spotlight on MySQL,利用Spotlight连接Linux服务器中的MySQL,进行相关配置如下:   点击& ...

  3. NIO网络编程中重复触发读(写)事件

    一.前言 公司最近要基于Netty构建一个TCP通讯框架, 因Netty是基于NIO的,为了更好的学习和使用Netty,特意去翻了之前记录的NIO的资料,以及重新实现了一遍NIO的网络通讯,不试不知道 ...

  4. BZOJ 2004 公交线路(状压DP+矩阵快速幂)

    注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...

  5. 用CSS实现3D 滚动的立方体

    用css3写3D立方体用到的属性不多,就那么几个:perspective,transform-style,以及transform. 目前来说能完美支持3D的浏览器有chrome.safari,火狐也支 ...

  6. 【CF55D】Beautiful numbers(动态规划)

    [CF55D]Beautiful numbers(动态规划) 题面 洛谷 CF 题解 数位\(dp\) 如果当前数能够被它所有数位整除,意味着它能够被所有数位的\(lcm\)整除. 所以\(dp\)的 ...

  7. 洛谷 P4240 毒瘤之神的考验 解题报告

    P4240 毒瘤之神的考验 题目背景 \(\tt{Salamander}\)的家门口是一条长长的公路. 又是一年春天将至,\(\tt{Salamander}\)发现路边长出了一排毒瘤! \(\tt{S ...

  8. Linux下chkconfig命令详解--(启动或停止)和查询系统服务的运行级信息

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  9. scala(三)

    一.面向对象编程——类 1.定义一个简单的类 class HelloWorld { private var name = "leo" def sayHello() { print( ...

  10. Linux用户创建及权限管理

    作业一: 1,新建用户natasha,uid为1000,gid为555,备注信息为“master” useradd natasha            vim /etc/passwd         ...