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

创建集合

  方法一:使用{},注意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. 构建一个内网的私有CA步骤

    1:使用openssl命令生成一个私钥,私钥必须放在/etc/pki/CA/private/目录下 (umask 077; openssl genrsa -out /etc/pki/CA/privat ...

  2. MySQL 备份和恢复 理论知识

    为什么要备份 数据无价   制定备份策略的注意点 1:可容忍丢失多少数据     2:恢复需要在多长时间内完成     3:备份的对象   数据.二进制日志和InnoDB的事务日志.SQL代码(存储过 ...

  3. Struts2(五)

    以下内容是基于导入struts2-2.3.32.jar包来讲的 1.文件上传 A.单文件上传 <body> <form action="${pageContext.requ ...

  4. 词法分析用c++实现的

    #include<stdio.h>#include<string.h>int i,j,k,sign,flag,number,run;char ch;char word[10]; ...

  5. CCF——门禁系统201412-1

    问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个编号,每条记录用读者的编号来表示.给出读者的来访记录,请问每一条记录中的读者是第几次出现. 输入格式 输入的第一行 ...

  6. 关于解决java读取excel文件遇空行抛空指针的问题 !

    关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...

  7. sublime text there are no packages available for installation 解决办法

    hosts  增加一行 : #50.116.33.29       sublime.wbond.net.

  8. 【Django】Django迁移数据库

    我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,Django 还没有把它翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建 为了让 Django 完成翻译,创建 ...

  9. ZOJ2725_Digital Deletions

    题意是这样的,一开始给你一串数字,两个人轮流操作,操作可以分为两种. 1.每次修改一个数字,使其变为一个小于当前的非负数. 2.移除中间的某一个0以及0右边的所有数字. 使得所有数字消失的游戏者获胜. ...

  10. KMP算法模板(pascal)

    洛谷P3375: program rrr(input,output); var i,j,lena,lenb:longint; a,b:ansistring; next:..]of longint; b ...